我可能只是盲目或其他什么,但我真的无法弄清楚为什么我无法访问返回的$ Resource对象的子对象,该对象检索了一堆JSON对象。
Resource
> $resolved: true
> $then: function (b, g) {var j=e(),h=
> data: Object
> 519bc5f6b2427a732be1c360: Object
原始JSON如下所示:
{
"data": {
"519bc5f6b2427a732be1c360": {
"id": "519bc5f6b2427a732be1c360",
"planning": {
"id": "519bc5f6b2427a732be1c355"
}
}
}
}
任何人都可以解释为什么这不起作用:
var training = Training.query()
console.log(training); // returns the entire $Resource
console.log(training.data); // returns: undefined
答案 0 :(得分:2)
以下是解释 - 来自the Angular docs:
重要的是要意识到调用$ resource对象方法会立即返回一个空引用(对象或数组,具体取决于isArray)。从服务器返回数据后,将使用实际数据填充现有引用。这是一个有用的技巧,因为通常将资源分配给模型,然后由视图呈现。具有空对象导致无渲染,一旦数据从服务器到达,则对象用数据填充,并且视图自动重新呈现其自身显示新数据。这意味着在大多数情况下,永远不必为动作方法编写回调函数。
这样可行:
var training = Training.query(function(value){
// this is the callback function
console.log(training === value); // true - it's the same object
console.log(training.data); // and now it has data
});
答案 1 :(得分:1)
尝试获取这样的数据:
var training = Training.query(function($val) {
console.log($val);
console.log($val.data);
});