我正在尝试基于异步填充的数组生成多个 div。
<div ng-controller=visCtrl>
{{categories}} <!-- prints nothing -->
<div ng-repeat="item in categories">
some test text
</div>
</div>
一段时间后类别被填充。
但是没有生成 div,因为调用时 categories
是空的。
如何生成多个 div?
Controller 代码如下:
var myApp = angular.module('myApp', ['ui.utils']);
//some lines clipped in between
myApp.controller('visCtrl', function($scope) {
d3.csv($scope.dataFile,function(d){
$scope.opendata=d;
var obj=$scope.opendata[0];
$scope.categories=[];
for(var key in obj){
if(key!=="STATE/UT"&&key!=="DISTRICT"&&key!=="YEAR"){
$scope.categories.push(key);
}
}
console.log($scope.categories);
});
});
最佳答案
<div ng-repeat="item in categories">
some test text
</div>
这段代码没问题。 ng-repeat
应该在 categories
更改时更改 DOM。如果没有,那么 Angular 就不知道这些变化。
首先,确保分配给正确的类别
($scope
上的类别,而不是局部变量或其他东西)。
接下来,如果您通过 jQuery AJAX 调用(例如)填充它,那么它就超出了 Angular 的生命周期。您需要通过调用 $scope.$apply()
告诉它事情发生了变化。读这个,例如:https://github.com/angular/angular.js/wiki/When-to-use-$scope.$apply()
关于javascript - 填充数据时如何调用 ng-repeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29701921/