2

私は盲目か何かかもしれませんが、JSON オブジェクトの束を取得した返された $Resource オブジェクトのサブオブジェクトにアクセスできない理由が本当にわかりません。

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 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
});
于 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 に答える