javascript - 填充数据时如何调用 ng-repeat?

标签 javascript jquery html angularjs

我正在尝试基于异步填充的数组生成多个 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/

相关文章:

javascript - DataTable - 响应式自定义断点

python - 无法使用 BeautifulSoup 抓取嵌套 html

php - 如果创建日期和本地日期相同则显示图标 php

javascript - Fabric.js 如何添加与旋转矩形相邻的矩形

javascript - typescript VueJS : Using watcher with computed property

javascript - 如何将 'tap' 和 'doubletap' 绑定(bind)到 Hammer.js 中的同一元素?

javascript - 如何在声明之前在js中使用HTML元素?

jquery - 使用 JQuery UI 将单选按钮转换为 slider 元素

javascript - 对话框未打开 ajax jquery MVC2 asp.net

html - 负边距如何在 Bootstrap 轮播中起作用?