0

HTML:

<div class="span10" ng-controller="GroupFieldsCntl" ng-init="init()">
    <div ng-repeat="field in fields"></div>
</div>

GroupFieldCntl:

function GroupFieldsCntl($scope) {
    $scope.fields = [];

    $scope.init = function() {
            // Get fields.
        $.get(ctx + 'admin/fields/fieldsJSON', function(data) {
            for(var i in data) {
                $scope.fields.push(data[i]);
            }
        });
    }
}

我确定 ajax 调用得到正确的响应,但 html 页面不显示这些数据。

4

2 回答 2

0

就像这里的评论者说的: 1. 使用 $http.get 而不是 $.get。这是 Angular 的 Ajax,你应该使用它。[它需要被注入控制器] 2.如果你循环,var i in data你可能会循环通过非数据属性的方法,如建议的那样,使用

for (var i in data) {
    if data.hasOwnProperty(i)
       //do something
    }
}

如果您认为不良数据不会出现问题,您始终可以使用以下语法让已解决的承诺(获取请求)自行解析为 $scope 变量:

$scope.fields = $http.get(tx + 'admin/fields/fieldsJSON');

当数据到达时,字段将在解析后自动包含 JSON 响应。这是一个不处理错误响应的快捷方式。

于 2013-09-05T06:37:18.077 回答
0

仅当您使用angular函数或$apply在其他函数上使用时,对数据所做的更改才会触发视图更改。因此,正如评论所建议的那样,您可以(应该)使用 angular 的$http服务,或者在$apply.

于 2013-09-05T06:44:24.107 回答