我从服务器收到此对象:
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”这样的东西成功绑定。
请指导!
答案 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()
。你需要“然后”承诺并让它解决。