AngularJS承诺在完成时不会调用`then`回调

时间:2013-06-18 17:13:51

标签: angularjs promise q

我有一些类似主控制器的东西在示波器中设置了一些东西,所以内部控制器可以使用它。

那个设置工作是异步的,所以我把它包装在一个promise中,但是它没有执行它的回调,除非它已经解决了(我尝试设置一个断点,如果我等待的话,它实际上运行了{{1回调)。

这是一个小提琴,可以通过超时而非网络请求重现我的问题:http://jsfiddle.net/LMv8v/1/

HTML

then

的Javascript

<div ng-app>
    <div ng-controller="configController">
        <div ng-controller="testC">
            {{test}}
            {{foo}}
        </div>
    </div>
</div>

它显示'超时',但不显示' then ... '消息。

(我知道这更适合服务,但我已经有很多嵌套作用域的代码,我想在开始重构之前让它工作)

1 个答案:

答案 0 :(得分:2)

如果您正在使用$.getJSON()(来自我猜的jQuery)

您将遇到类似的问题,您正在解决Angular世界之外的问题,请尝试以下方法。

$.getJSON('ajax/test.json', function(data) {
   $scope.$apply(function(){
      deferred.resolve({
            'foo' : 'baz'
      });
  });
});

<强> Example on jsfiddle with jQuery ajax