【发布时间】:2015-06-30 22:01:16
【问题描述】:
我的 http.get 有问题。
Index.html
<div ng-repeat="element in elements">
<p>{{element.elementText}}</p>
</div>
app.js
我有两个控制器。第一个用 json 初始化 $scope.elements 并且可以工作:
$http.get('someUrl')
.success(function (response) {
$scope.elements = response;
})
当 ng-click 调用范围函数时,第二次更新 $scope.elements 与另一个 json:
$scope.updateScope = function () {
$http.get('someOtherUrl')
.then(function (response) {
$scope.elements = response.data;
});
但是当我调用 updateScope 时,什么也没有出现。我尝试使用 .success 但没有。我在将响应分配给 $scope.elements 后尝试使用 $scope.$apply 但它会产生错误(错误:[$rootScope:inprog] http://errors.angularjs.org/1.3.11/$rootScope/inprog?p0=%24digest)。
更新 - 如果我在范围元素上重新加载页面 ng-repeat 可以正常工作。 所以 $scope.elements 包含正确的值,但 ng-repeat 不会自行更新。 对不起我的英语......
你能帮帮我吗?
【问题讨论】:
-
您是否验证过
response的外观?看起来和之前的反应一样吗?有回应吗? -
是的,迈克尔·佩雷诺。它包含新值。
-
您是否验证过它应该直接设置为响应?我的观点是摘要已经在运行,所以它不是 Angular 错过了更新。第二个响应可能有一些不同。
-
等等,我刚刚注意到你提到你有两个不同的控制器;您是真的指控制器还是仅仅指更新数据的单个控制器范围之外的方法?
-
不,我有两个控制器,$scope.elements 在 .run(function ($rootScope) { $rootscope.elements = ''; }); 中初始化。