Это мои файлы:
модели
app / models / export default DS . Модель . extension ({ name : DS . attr ( 'string' ), house : DS . принадлежит ( 'house' , { async : true }), поля : DS . hasMany ( 'box' , { async : true }) }); .js:
export default DS.Model.extend({
qty: DS.attr('number'),
basket: DS.belongsTo('basket'),
cartLines: DS.hasMany('cart-line', { async: true })
});
приложение / модели / box.js:
export default DS.Model.extend({
qty: DS.attr('number'),
box: DS.belongsTo('box'),
product: DS.belongsTo('product')
});
приложение / модель / корзина-line.js:
export default DS.Model.extend({
name: DS.attr('string'),
price: DS.attr('number')
});
приложение / модели / product.js:
export default Ember.Route.extend({
model(params) {
return Ember.RSVP.hash({
basket: this.store.findRecord('basket', params.basket_id),
boxes: this.store.findAll('box'),
products: this.store.findAll('product')
});
},
setupController(controller, models) {
controller.setProperties(models);
}
});
Маршруты
приложение / маршруты / basket.js:
export default Ember.Controller.extend({
subTotal: Ember.computed('boxes.@each.cartLines', function () {
return this.products.reduce((price, product) => {
var total = price + product.get('price');
return total;
}, 0);
})
});
Контроллеры
приложение / контроллеры / basket.js:
boxes: this.store.findAll('box')
Вопросов:
Я новичок, поэтому я изучаю и делаю ошибки. Сожалею.
1) Каков наилучший метод Ember для фильтрации отношений при первом входе в маршрут? Например, теперь я загружаю каждую коробку в свое приложение console.log(tot)
. Мне нужен способ не загружать все ящики в моем webapp, просто в корзине. Мне нужно " субтотальная : Ember . Вычислен ( 'basket.boxes @ each.cartLines.' , Функция () { пусть счетчик = 0 ; консоль . Журнал ( 'называется субтотальная:' , подсчет ); // Это должно быть 0 никогда кол = кол + 1 , вернуть это . получить ( 'basket.boxes' .) затем ( коробки => { коробки . Foreach ( коробка => { коробка . получить ( 'cartLines' ). затем ( cartLines => { cartLines . уменьшить ( function ( tot , value ) { console . log ( 'tot:' , tot + value . get ( 'product.price' )); return tot + value . get ( 'product.price' ); }, 0 ); }); }); }); }), с фильтром "непосредственно из бэкэнда?