レンダリングするEmber.Route
のmodel()
メソッドで返す前に、Ember-Dataから照会されたオブジェクトの配列を 'type'キーでソートしています。テンプレートはソート後にモデルオブジェクトからレンダリングされません
アプリ/路線/ test.js
export default Ember.Route.extend({
model() {
let obj = Ember.Object.create({a: [], b: [], c: []});
this.get('store').findAll('obj').then(function(unsorted){
unsorted.forEach(function(item) {// sort per type
obj.get(item.get('type')).addObject(item);
});
return obj;
});
}
});
(の約束)がエンバー・データのクエリは次のようになります(すべてのオブジェクトは、エンバー内部プロパティを持っている)
[
{
_id: '1',
type: 'a',
properties: {...}
},
{
...
},
{
_id: '15',
type: 'b',
properties: {...}
}
]
によって返される配列
"type"キーでソートされたオブジェクトを持つ新しいオブジェクトは、次のようになります
{
a: [{
_id: '1',
type: 'a',
properties: {...}
},
...
],
b: [
... ,
{
_id: '15',
type: 'b',
properties: {...}
},
c: [...]
};
アプリ/路線/ test.hbs
<h2>Test</h2>
<h3>Type a</h3>
{{#each model.a as |source|}}
<div>
{{source.properties.prop1}}
</div>
{{/each}}
テンプレートは、配列をループ部分をレンダリングしていない、またエンバー・インスペクタプラグインリストはの「独自のプロパティ」の下Model
財産ありませんルート(「ツリーの表示」モードの右パネル)。
しかし、POJO(文字どおりキーで配列のオブジェクトを貼り付ける)を返すと、すべてが期待どおりに動作します。
これはEmber-dataが返すオブジェクトの内部(Ember-)プロパティと関係がありますが(私はオブジェクトの所有者などについて読んだことがあります)、これを理解することはできません。 。
@Pavolの答えでは、私はすでに問題が、私の知識の枠組みの知識よりも一般的には約束の理解であることに気付きました。入力! – MikiDi