-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