我的承诺有一种奇怪的行为。请参阅以下插件:http://plnkr.co/edit/uBuBS3Oi7mIPob2jtqkm
这是基于Marc Galgleish(http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/)的一篇非常好的文章。
在我的控制器中,我有一个名为messages的简单$ scope属性(从服务中获取defer对象):
angular.module('myModule', [])
.controller('HelloCtrl', function($scope, HelloWorld) {
$scope.messages = HelloWorld.getMessages();
$scope.click = function()
{
alert($scope.messages[0]);
}
});
正如所料,在履行承诺后(每个解析),视图获取实际值并显示它们。但是单击按钮并执行单击功能,我无法按预期使用$ scope.messages。只是在视图中,承诺没有得到解决。
使用(http://plnkr.co/edit/vX3dSFjzB6R7q4Oed7Gj)
HelloWorld.getMessages().then( function(data){
$scope.messages = data;
});
一切正常,但这对我来说不是解决方案。在我的实际应用程序中,它是一个服务返回一个复杂的已经同步的缓存对象(来自本地存储)或一个承诺,如果需要与服务器同步。同步后返回更新的对象。
有什么想法吗?
提前谢谢 克努特答案 0 :(得分:3)
即使在解决之后,这个承诺仍然是一种承诺。
试试这个:
$scope.click = function()
{
$scope.messages.then(function(msgArray) {
alert(msgArray[0]);
});
}