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页面没有显示这些数据。
答案 0 :(得分:0)
就像这里的评论员所说:
1.使用$ http.get而不是$ .get。这是Angular的Ajax,你应该使用它。 [它需要注入控制器]
2.如果循环进入var i in data
,您可能会循环遍历非数据属性的方法,如建议的那样,使用
for (var i in data) {
if data.hasOwnProperty(i)
//do something
}
}
如果你认为坏数据不会出现问题,你总是可以使用以下语法让已解决的promise(get request)将自己解析为$ scope变量:
$scope.fields = $http.get(tx + 'admin/fields/fieldsJSON');
当数据到达时,字段将在解析后自动包含JSON响应。这是一个不处理错误响应的快捷方式。
答案 1 :(得分:0)
对数据所做的更改只有在您使用angular
函数执行或在其他函数上使用$apply
时才会触发视图更改。因此,评论建议您可以(应该)使用angular $http
服务,或在$apply
内调用您的函数。