2

我可能只是盲人之类的,但我真的无法弄清楚为什么我无法访问返回的 $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 
4

2 回答 2

2

这是解释 - 来自Angular 文档

重要的是要意识到调用 $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
});
于 2013-05-25T12:50:31.140 回答
1

尝试获取这样的数据:

var training = Training.query(function($val) {
    console.log($val);
    console.log($val.data);
});
于 2013-05-25T12:42:37.163 回答