我是angularjs的新手,我已经读过ng-bind,当数据源数组发生更改时,必须调用$ scope.apply()来更新输出。但是我也读过,当您使用 ng-repeat 时,它应该像魅力一样开箱即用。以下情况并未显示页面中的所有元素:
<body ng-app="gallery">
<div ng-controller="GalleryController">
{{imageFolder}}
<div class="uk-child-width-1-5 uk-grid-small" uk-grid>
<div ng-repeat="image in imageFolder">
hier
</div>
</div>
</div>
</body>
还有JS:
let gallery = angular.module('gallery', []);
gallery.controller('GalleryController', function($scope) {
$scope.imageFolder = [1,2];
setTimeout(function(){
console.log($scope);
$scope.imageFolder.push(6,7);
console.log($scope);
console.log($scope.imageFolder)
},1000);
$scope.imageFolder.push(3,4,5);
console.log($scope);
});
在前端,我们看到:
[1,2,3,4,5] er er er er 嗨
6和7在console.log中可见,但没有触发前端更新(?)。在此项目的后面,应通过Ajax(sharepointplus)将图像信息(如url和title)加载到DOM中(但这需要花费大约5到7秒的时间)-我的第一个版本没有显示任何图像-甚至ng-repeat也由于与setTimeOut ...相同的问题而未触发
在这里我该怎么做才能使对象内容更改上的角度刷新 aka:“空数组->填充数组”?
感谢您的帮助和建议。
答案 0 :(得分:1)
请这样做
setTimeout(function(){
console.log($scope);
$scope.imageFolder.push(6,7);
console.log($scope);
console.log($scope.imageFolder);
$scope.$apply();
},1000);