Angular JS,Async回调中的范围更新

时间:2014-06-01 11:45:18

标签: javascript ajax angularjs angularjs-scope angular-resource

我有一系列2个AJAX请求,后者取决于第一个的结果。我已将它们放入第一个返回对象的承诺中。即

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没有更新。我刚刚在{{}}括号内看到了结果。即

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

产品可以解决收到的产品,但是产品仍然是空白的。这是为什么?

1 个答案:

答案 0 :(得分:1)

你不需要$ apply,因为一切都在angular事件循环中你需要的是不要通过重新分配产品对象来破坏对绑定的引用。 当你链接你的html产品要么不存在,要么指向mem地址。 当你做的时候

$scope.product = productResource.get();

您将该变量重新分配给不同的地址,因此绑定被破坏了。但你的html没有被重新绑定到新地址,这更有可能是你的问题,你可以尝试在重新分配它之前使变量为null,不确定它会起作用,或者你可以使产品最初成为一个空对象,然后用它扩展它

productResource.get();