与 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
});
我已经使用 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
});