Angular JS,作用域在Async回调中更新



我有一系列2个AJAX请求,后者取决于第一个请求的结果。我把它们放到了第一个返回对象的promise中。ie .

var productResource = $resource('http://urlhere');
$scope.product = productResource.get();
$scope.product.$promise.then(function(data) {
    var depResource = $resource('http://deps/' + data.code );
    $scope.deps = depResource.get();
    $scope.$apply();
});

我可以看到资源被击中与适当的数据拉下我的网络选项卡,但我的HTML没有更新。我刚刚把它放在{{}}括号内,以查看结果。ie .

Prod -  {{ product }}
Deps -  {{ deps }}

product解析收到的产品,但深度为空白。为什么会这样?

你不需要$apply,因为所有东西都在angular事件循环中,你需要的是不要通过重新分配product对象来破坏对绑定的引用。当你链接你的HTML产品时,要么不存在,要么指向一个内存地址。

$scope.product = productResource.get();

您将该变量重新分配给不同的地址,因此绑定被打破。但是你的HTML没有重新绑定到新的地址,这更可能是你的问题,你可以尝试使变量为空之前重新分配它,不确定这将工作,或者你可以使产品最初为空对象,然后扩展它与

productResource.get();

最新更新