-1
我试图使用服务进行基本数据拉取,并在有数据时将其打印在屏幕上,但某些操作不起作用。
我的服务:
mymodule.factory('MyService', function($http, $q) {
var service = {
getData: function() {
var dfd = $q.defer();
$http.get(apiServerPath).success(function (data) {
dfd.resolve(data);
});
return dfd.promise;
}
}
return service
}
我的控制器:
mymodule.controller('myCtrl', ['$scope', 'MyService', function($scope, MyService) {
$scope.myvar = MyService.getData();
}
HTML
<div> {{myvar}} </div>
我可以从浏览器控制台中看到 -
- 的MYVAR对象转成一个承诺对象
- 成功函数被调用和“数据”中有有效的数据
- 而对于我的问题和问题 - 当延迟对象解决控制器的变量不发生变化 - 为什么?
您不能在视图内使用promise。 {{myVar}}应引用承诺的结果,而不是承诺本身。 – 2014-11-02 15:39:21
请参阅http://stackoverflow.com/questions/23803743/what-is-the-deferred-anti-pattern-and-how-do-i-avoid-it – 2014-11-02 15:57:15