与 ng-repeat 绑定

Bindonce with ng-repeat

我已经使用 Bindonce 来提高 ng-repeat 的性能。

但我有一个问题:从 ng-repeat 使用的集合稍后填充数据(从 API 请求数据需要一些时间),所以它是空的,导致更新被阻止通过 Bindonce.

如何指定等待服务器响应后再绑定?


代码示例:

在控制器中我有数组$scope.requests = [];

它是用工厂初始化的

$scope.requests = CurrentUserData.getRequests();

我对 promises 很生气,认为这段代码可以提供帮助:

CurrentUserData.getRequests()
            .then(function(response) {
                $scope.requests = response;
            });

但是我收到错误消息

angular.js:11655 TypeError: CurrentUserData.getRequests(...).then is not a function

最可能的原因:CurrectUserData 中的函数 getRequests 没有 return promise,它应该是 return $http.get('/the/url/etc')

CurrentUserData.getRequests(...) 未返回承诺。

如果您将使用代码

CurrentUserData.getRequests()
            .then(function(response) {
                $scope.requests = response;
            });

那么 $scope.requests = response 行应该改为 $scope.requests = response.data

说了可以利用原码

$scope.myData = CurrentUserData.getRequests();
$scope.$watch(myData,
              function(newVal, oldVal){
                     $scope.requests = newVal
              });