【发布时间】:2013-07-31 14:01:16
【问题描述】:
我正在尝试将 $scope 变量设置为 promise 并在模板引擎中使用该范围变量,但它似乎不起作用。
在控制器中:
$scope.getUser = function() {
// I am returning a promise
// need this to be in a function so angular calls the function
// more than once as the promise may change if a new user logs in,
// i.e. myself is now someone new
return UserService.getMyself();
}
服务:
var userDeferred = $q.defer();
// Some other code here which resolves the promise.
// I have verified that the promise does get resolved.
service.getMyself = function () {
return userDeferred.promise;
};
在html中:
<button>
{{getUser().username}}
</button>
我是从 angular 文档中读到的:
$q Promise 被 Angular 模板引擎识别,它 意味着在模板中,您可以将附加到范围的承诺视为 如果它们是结果值。
但我想我误解了这一点,我用错了。我有函数返回,因为用户可以更改(承诺更改)并且我希望我的模板引擎能够了解与承诺有关的事情已经改变的事实(即我在用户更改时创建了一个新的承诺并且我希望我的模板看那个。
编辑:
这是一个显示我想要达到的目的的 plunker: http://plnkr.co/edit/6J9pWY?p=preview
【问题讨论】:
-
可能这个功能太多了,可以试试
$scope.getUser = UserService.getMyself吗? -
是的,这也不起作用,不过是个好主意!
-
另外 $scope.user = UserService.getMyself() 似乎也不适用于 {{user.username}}。
-
显示 UserService.getMySelf() 中有什么
-
使用 UserService.getMyself() 方法更新问题
标签: angularjs