Um das Layout einer Seite zu steuern, versuche ich, ein Modell an eine Ember-Komponente zu übergeben und sie in Gruppen zu splitten. Ich kann nicht herausfinden, wie ohne content._data
zugreifen und das Modell im Wesentlichen neu erstellen. Der grobe Code:Manipulieren des Ember-Modells in Komponente
parentRoute.js
export default Ember.Route.extend({
model() {
return this.store.findAll('item');
}
});
parentRoute.hbs
{{ wall model=model }}
childComponent.js
export default Ember.Component.extend({
groupedItems: Ember.computed(function() {
// convert model data into array of objects
let allItemss = this.get('model.content').map(function(obj){
let mappedObj = obj._data;
mappedObj.id = obj.id;
return mappedObj;
});
// group into arrays of up to 3 for layout
let groupedItems = [];
while(allItems.length){
groupedItems.push(allItems.splice(0,3));
}
return groupedItems;
})
});
childComponent.hbs
{{#each groupedItems as |items|}}
{{#each items as |item|}}
<div class="item-group-{{items.length}}">
<h2 class="headliner">
{{ item.id }} {{ item.name }}
</h2>
</div>
{{/each}}
{{/each}}
Gibt es einen besseren Weg, dies zu tun? Ich kann nicht .then()
mit this.get('model')
arbeiten, und die item
selbst kann nicht gespleißt werden, da es ein Objekt, kein Array ist.