我正在使用angular,我正在使用$ http.get来获取JSON响应,并将其设置为$scope.myObjects
。
当我在html中使用ng-repeat="object in myObjects"
时,它可以正常工作。
我想知道,有没有办法操纵这些物体?我想创建一个名为myBoolean
的属性,并为myObject
中的每个对象设置myBoolean
到true
。
尝试通过执行以下操作在控制器中操作此对象时:
$scope.myObjects.something
我得到myObjects is undefined
当我尝试在浏览器中查看JSON响应时,我看到的是[object Object]。是否有工具可以查看JSON响应?
编辑: 这是我的HTML
<div class="comment" ng-hide="loading" ng-repeat="comment in comments">
<h3>Comment <% comment.id %> <small>by <% comment.author %></h3>
<p><% comment.text %></p>
<div class="col-sm-6">
<p><a href="#" ng-click="deleteComment(comment.id)" class="text-muted">Delete</a></p>
</div>
</div>
这是我的控制器
angular.module('mainCtrl', [])
.controller('mainController', function($scope, $http, Comment) {
$scope.commentData = {};
$scope.loading = true;
Comment.get()
.success(function(data) {
$scope.comments = data;
$scope.loading = false;
});
});
和我的服务
angular.module('commentService', [])
.factory('Comment', function($http) {
return {
// get all the comments
get : function() {
return $http.get('/api/comments');
},
});
答案 0 :(得分:3)
那是因为$scope.myObjects
是一个数组(即[]
),而不是一个对象(即{}
)。
因此,您必须遍历数组并逐个访问其中的元素。
angular.forEach($scope.myObjects, function(myObject){
myObject.myBoolean = true;
});
console.log($scope.myObjects);
答案 1 :(得分:2)
$ scope.myObjects实际上是一个数组。因此,要操作此范围变量中存在的项,您需要使用循环对其进行迭代。例如:
for (index = 0; index < $scope.myObjects.length; index++) {
$scope.myObjects[index].myBoolean = yourValue;
}
答案 2 :(得分:1)
ng-repeat
可以重复项目列表,例如项目/项目对象数组,但不能重复对象。
如果我们这样做:
$scope.myObjects.something = myBoolean;
它将覆盖集合,因此ng-repeat
将失败。
像这样使用
Comment.get()
.success(function(data) {
$scope.comments = data;
angular.forEach($scope.comments, function(comment) {
comment.canEdit = true; // hear we will get each comment so we can set property and value to each commnent
});
$scope.loading = false;
});