来自AJAX的AngularJS控制器数据 - 并不总是有效

时间:2015-11-17 11:20:11

标签: javascript angularjs ajax

我使用Angular 1.4.7和angular-ui-router 0.2.15作为状态路由器。我的标准控制器如下:

var app = angular.module('App.Page1',[....]);
app.controller('Page1Ctrl',['$scope' ... ,function($scope ...) {
...
  $scope.records = [];

  // jsRoutes.controllers.Page1.list() - is ajax wrapper
  jsRoutes.controllers.Page1.listitems().ajax({
    success: function(data) { 
       console.log("RECV",data);
       $scope.records = data 
    },
    error: function(res){ console.log("ERROR",res); }
  });
});

刚刚推出记录的控制器模板:

<h1>Page1</h1>
<div ng-repeat="record in records" class="row">
    {{record.name}} ...
</div>

它有效但不稳定。有时我只收到带有标题的页面。看起来解析器数组是空的,但我在网络请求中看到列表请求已成功接收并且调用了成功函数。刷新页面后,我再次看到我的数据。

1 个答案:

答案 0 :(得分:2)

您的ajax服务调用不在AngularJS的上下文中。 因此,您需要明确告知Angular某些数据已更改。

在将数据分配给$ scope变量后,可以在成功函数中调用$scope.$apply()

$scope.parsers = data; $scope.$apply();

这可以解决您的问题。