AngularJS:Can';通过Ajax实现t init和ng init

AngularJS:Can';通过Ajax实现t init和ng init,angularjs,Angularjs,HTML: 我确信ajax调用得到了正确的响应,但是html页面没有显示这些数据。就像这里的评论员所说: 1.使用$http.get而不是$http.get。这是Angular的Ajax,您应该使用它。[需要将其注入控制器] 2.如果您在var i in data中循环,您可能会循环使用非数据属性的方法,正如建议的那样,使用 function GroupFieldsCntl($scope) { $scope.fields = []; $scope.init = function

HTML:


我确信ajax调用得到了正确的响应,但是html页面没有显示这些数据。

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

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]);
            }
        });
    }
}
如果您认为坏数据不会出现问题,则始终可以使用以下语法将已解析的承诺(get-request)自身解析为$scope变量:

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

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

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

中调用您的函数,这不是答案,但在使用
for(数据中的var i)
时,您可能也希望检查
hasOwnProperty
。使用angular的
$http
而不是jquery的$.get()。@CodeHater,我只是不明白,我认为对
$scope.fields
的任何更改都会影响html页面。在$.get()中执行的任何操作都是在角度世界之外的,它无法跟踪对模型的任何更改。使用
$http
for (var i in data) {
    if data.hasOwnProperty(i)
       //do something
    }
}
$scope.fields = $http.get(tx + 'admin/fields/fieldsJSON');