AngularJS:使用异步数据初始化服务

AngularJS:使用异步数据初始化服务,第1张

AngularJS:使用异步数据初始化服务

你看了

$routeProvider.when('/path',{resolve:{...}
吗?它可以使诺言方法更加简洁:

在您的服务中兑现承诺:

app.service('MyService', function($http) {    var myData = null;    var promise = $http.get('data.json').success(function (data) {      myData = data;    });    return {      promise:promise,      setdata: function (data) {          myData = data;      },      doStuff: function () {          return myData;//.getSomeData();      }    };});

添加

resolve
到您的路由配置:

app.config(function($routeProvider){  $routeProvider    .when('/',{controller:'MainCtrl',    template:'<div>From MyService:<pre>{{data | json}}</pre></div>',    resolve:{      'MyServiceData':function(MyService){        // MyServiceData will also be injectable in your controller, if you don't want this you could create a new promise with the $q service        return MyService.promise;      }    }})  }):

解决所有依赖关系之前,不会实例化您的控制器:

app.controller('MainCtrl', function($scope,MyService) {  console.log('Promise is now resolved: '+MyService.doStuff().data)  $scope.data = MyService.doStuff();});

我在plnkr上做了一个例子:http
://plnkr.co/edit/GKg21XH0RwCMEQGUdZKH?p=preview



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5048968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存