使用angularjs中的pager指令。当我对代码集合($ scope.installations)进行硬编码时,一切正常,但是当我从服务器中提取数据时,'''''属性在指令中始终是'未定义'。
这是我的指示:
angular.module("qusion.ui.pager", [])
.directive("qnPager", [
function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var options = scope.$eval(attrs.qnPager);
var settings = {
source: null,
paging: null,
schema: {
page: 'PageNumber',
size: 'Size',
totalPages: 'TotalPages',
totalCount: 'TotalCount'
}
};
angular.extend(settings, options);
scope.$watch(settings.source, function(value) {
console.log(settings.source); // UNDEFINED ???
});
}
};
}
]);
以下是我如何称呼它。
<ul qn:pager="{source: installations}">
最后我的控制器样本
function MyController(Installation){
$scope.installations = [];
// get sample (this works)
// $scope.installations = [{ID: 1, Title: 'Test 1'}, {ID: 2, Title: 'Test 2'}]
// get from server (this don't work)
Installation.getAll().then(function(data) {
$scope.installations = data.Installations;
});
}
答案 0 :(得分:0)
看看这是否解决了您的问题:
不是将新数据数组分配给安装 - 而是代替$scope.installations = data.Installations;
- 尝试填充相同的数组。将新数据数组分配给安装时,可能会丢失对旧数组的绑定 - 即,该指令仍可能绑定到以前的数据数组。
$scope.installations.length = 0
for(var i = 0; i < data.Installations.length; i++){
$scope.installations.push(data.Installations[i]);
}
有关详细信息,请参阅https://stackoverflow.com/a/12287364/215945。
可以/应该使用更新: angular.copy():
angular.copy(data.Installations, $scope.installations);
当向copy()方法提供目标时,它将首先删除目标的元素,然后从源中复制新的元素。