Btw, no need to wrap navigator.mozApps.getAll() in a Promise, as
DOMRequests have become thenable. You can just do

> var request = navigator.mozApps.getAll();
> request.then(…)



On 04.01.2016 02:48, Jovan Gerodetti wrote:
> Your promise then() callback is out of the Angular digest cycle... you
> need to call $scope.$apply()
> 
> 2016-01-04 8:41 GMT+01:00 <[email protected]
> <mailto:[email protected]>>:
> 
>     Hi Team:
> 
>     I created an Angular service to pull list of installed apps in
>     Firefox OS. In this angular service I created Promise object to
>     return list of apps, and that promise object is used with "then"
>     method to update an object in $scope.
> 
>     Issue is: it's not updating the view first time Promise has been
>     fulfilled. Please see the code below.
> 
>     privacyApp.factory('appList', function(){
> 
>       var mozApps = window.navigator.mozApps;
>       var mozAppsMgmt = mozApps && mozApps.mgmt;
> 
>       var promise = new Promise(function(resolve, reject) {
> 
> 
>               var req = mozAppsMgmt.getAll();
>               req.onsuccess = function success(evt) {
>                 resolve(evt.target.result);
>               };
>               req.onerror = function error(evt) {
>                 console.log('failed to get installed apps');
>                 reject(req.error);
>               };
> 
>       });
> 
>       return promise;
> 
>     });
> 
> 
>     I'm using Promise returned from above service in the controller of
>     the page to update a variable like this:
> 
>     privacyApp.controller("appsController", function($scope, appList){
> 
>           var appJSON = {};
>           $scope.apps = {};
> 
>           appList.then(function(data){
> 
>             for(var i=0;i<data.length;i++){
> 
>               if(data[i].manifest.type !== "certified"){
>                 appJSON[data[i].manifest.name <http://manifest.name>] =
>     data[i].manifest;
>                 //appsList[data[i].manifest.name <http://manifest.name>]
>     = data[i].manifest;
>               }
>             }
> 
>             $scope.apps = appJSON;
> 
>           });
>     });
> 
>     When the page is loaded first time it doesn't show anything, but it
>     does show the apps list when I re-open(come back and click again)
>     that page (route on angular) again.
> 
>     Thank you.
> 
> 
>     _______________________________________________
>     dev-fxos mailing list
>     [email protected] <mailto:[email protected]>
>     https://lists.mozilla.org/listinfo/dev-fxos
> 
> 
> 
> 
> _______________________________________________
> dev-fxos mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-fxos
> 

_______________________________________________
dev-fxos mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-fxos

Reply via email to