【问题标题】:AngularJS: promise not correctly resolvedAngularJS:承诺未正确解决
【发布时间】:2013-07-18 22:23:29
【问题描述】:

我的承诺有一种奇怪的行为。请参阅以下插件:http://plnkr.co/edit/uBuBS3Oi7mIPob2jtqkm

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

在我的控制器中,我有一个名为 messages 的简单 $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;
});

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

有什么想法吗?

提前谢谢 克努特

【问题讨论】:

    标签: angularjs promise deferred


    【解决方案1】:

    即使解决了,promise 仍然是一个promise。

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-16
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 2020-10-22
      相关资源
      最近更新 更多