別のコントローラーからフェッチしたコンテンツをループして、いくつかのプロパティを変更しようとしていますforEach()
。ただし、これは機能せず、forEach
ループでプロパティを取得しようとすると が返されますundefined
。
だからここに私がやろうとしたことがあります:
- でコンテンツを取得してい
this.get("controllers.index.arrangedContent")
ます。
コンテンツは、local-storage-adapter で保存されるレコードの配列です。 私のモデル:
App.Data = DS.Model.extend({ name: DS.attr('string') });
私のコントローラーで:
App.StartController = Ember.ObjectController.extend({
needs: 'index',
alert: function() {
// get the "content" from the IndexController;
var names = this.get("controllers.index.arrangedContent");
var formattedNames = [];
names.forEach(function(item) {
var name = item.name; // <--returns "undefined"
name += "!";
formattedNames.push(name);
});
alert(formattedNames[0] );
}
});
質問forEach
:モデルに格納されている正しい値を返すループ 内のプロパティ「name」にアクセスする方法はありますか?
注: 最初は、これはローカル ストレージ アダプターのバグだと思ったので、バックエンドの "フィクスチャ アダプター" で同じことを試みましたが、これも機能しません。
ただし、ルーターでいくつかのモデル インスタンスを次のようにハードコーディングすると、次のようになります。
App.IndexRoute = Ember.Route.extend({
model: function() {
return [Ember.Object.create({id: 523, name: "John"}),
Ember.Object.create({id: 534, name: "Warren"}),
Ember.Object.create({id: 234, name: "Katy" })
];
}
});
forEach
ループ内で name プロパティを取得すると機能します。ember-data を使用しているときにこれが機能しないのはなぜですか?
ヒント/提案は大歓迎です!ありがとう!