首页 文章

AngularJS:承诺没有正确解决

提问于
浏览
2

我的承诺有一种奇怪的行为 . 请参阅以下插件: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;
});

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

有任何想法吗?

Thx提前克努特

1 回答

  • 3

    即使在解决之后,这个承诺仍然是一个承诺 .

    试试这个:

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

相关问题