2016-10-14 6 views
0

私はpeekAll()を使用して、結果を反復する最終的な目的でどのように動作するかを試しています。ルートのモデルフックでEmber peekAllによって返された結果がクラックする

は、私が持っている:私は私のアプリに持っているものに基づいて予想通り

var peekAllResults = this.store.peekAll('position'); 
console.log("peekAllResults = ", peekAllResults); 
var peekAllResultsContent = peekAllResults.get('content'); 
console.log("peekAlLresultsContent = ", peekAllResultsContent); 

これは、データを返しています。特に

は、ここでは、コンソールに表示するものです:

enter image description here

これまでのところは良いです。私が何をやっているのかに基づいて、期待通りに8つのレコードがあります。

しかし、私は追加するときとき:

console.log("peekAllResultsContent.length=", peekAllResultsContent.length) 

を私が取得:peekAllResultsContent.length = 0

私は( "長さ")

peekAllResultsContent.getをすれば何が起こっているのと同じ事そこ?

私はpeekAllが配列を返す同期呼び出しだと思った。それを開けて、実際に何がアレイに入っているのかを見てみると、いくつかのトリックがありますか?私は長さを得ることさえできないので、私は正しい道にはないと思います。

+0

'.get( 'content')'は実行しないでください。 – locks

答えて

1

すべてはEmber.Modelオブジェクトにラップされていますので、明確な結果はconsole.logには表示されません。 しかし、それの後ろに魔法はありません。エンティティがすでに店舗に積み込まれている場合は、peekAllで取得できます。

const positions = this.get('store').peekAll('position'); 
console.log('positions length', positions.get('length'); 

//we can iterate over them: 
positions.forEach(position => { 
    console.log(position.get('name')); 
}; 

//we can filter them: 
const southOnlyPositions = positions.filter(position => position.get('direction') === 'south'); 

のように...ところで

:でも、あなたがコンテンツにアクセスすることを想定していない約束のために。

const promises = this.get('store').findAll('position'); 

promises.then(positions => { 
    // positions here behave same as before 
}); 
関連する問題