无法访问返回的JSON对象的子对象

时间:2013-05-25 12:21:36

标签: javascript json angularjs

我可能只是盲目或其他什么,但我真的无法弄清楚为什么我无法访问返回的$ 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 

2 个答案:

答案 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);
});