2013-07-18 86 views
2

我有一个奇怪的行为,我的承诺。请参阅以下普拉克:http://plnkr.co/edit/uBuBS3Oi7mIPob2jtqkmAngularJS:承诺没有正确解决

它是基于从马克Galgleish(http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/)一篇非常好的文章的普拉克。

在我的控制器我有一个名为消息的简单$ scope属性(正从该服务的延迟对象):

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; 
}); 

一切工作正常,但是这不是我的解决方案。在我真正的应用程序中,它是一个返回复杂的已经同步的缓存对象(来自本地存储)的服务,或者如果需要与服务器同步的服务。同步后返回更新的对象。

任何想法?

THX提前 克努特

回答

3

的承诺仍然是它解决了即使一个承诺。

试试这个:

$scope.click = function() 
{ 
    $scope.messages.then(function(msgArray) { 
    alert(msgArray[0]); 
    }); 
}