如何遍历Angularjs中的json对象?

时间:2015-02-25 13:07:20

标签: json angularjs meanjs

我从服务器收到此对象:

Resource {$promise: Promise, $resolved: false, $get: function, $save: function, $query: function…}
    $promise: Promise
    $resolved: true__v: 
    _id: "54ed85a92908cc9c0cce7044"
    about: "about"
    amenities: Array[0]
        length: 
        __proto__: Array[0]
    created: "2015-02-25T08:19:53.790Z"
    direction: ""
    images: Array[2]
    location: "lkj"
    name: "resort3"
    path: "uploads/projects/ASH_RESORT002"
    profile_pic: "uploads/projects/ASH_RESORT002/images/2013-05-18-1452.jpg"
    resort_id: "ASH_RESORT002"
    room_count: 
    user: Object
    __proto__: Resource

我可以分别使用obj。$ promise和$ .resolved访问json中的$ promise和$ resolved项。但我无法通过obj.images或obj.resort_id

访问像“图像”这样的非美元物品。

BTW,当用于ng-model时,视图中可以访问相同的项目。像ng-model =“obj.resort_id”这样的东西成功绑定。

请指导!

1 个答案:

答案 0 :(得分:0)

您没有包含检索或记录此资源的代码,所以我在这里做了一些猜测。您可能遇到console.log()的副作用。该函数是异步的 - 它不会立即记录对象的“当前”值。但是,对象属性访问尝试是即时的。当你调试它时,你的对象看起来可能是'已解决'(因为它是IS,在它工作的时候),但是直接访问属性正在查看尚未解析的对象。您可以通过console.log()属性$resolved确认这一点。

$ resource的文档包含适当的解决方案:

var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}).$promise.then(function(user) {
    // access user.value here.
});

也就是说,在致电User.*后,您无法立即访问.get()。你需要“然后”承诺并让它解决。