Я пытаюсь установить свойство на вход, привязанный к модели, но я не знаю, как добраться до этого единственного элемента. Вот мое действие контроллера:Ember.js, работающий с одним членом дочернего элемента, перечисляемым
acceptEdit: function(item) {
items = this.get('items')
items.toArray().forEach(function(item){
item.set('isEditing', false);
});
items.save();
}
Элементы принадлежат к категории. Вот Категория модель:
App.Category = DS.Model.extend({
title: DS.attr('string'),
items: DS.hasMany('item'),
itemCount: function() {
return this.get('items.length');
}.property('[email protected]')
});
Так что, когда acceptEdit называется я могу получить все пункты для категории для текущего маршрута, но я не могу понять, как получить на точный пункт редактируется. Таким образом, мой неэлегантный код, который просто перебирает все элементы, чтобы установить «isEditing» на false. Clobbering работает, но не идеален: \
Есть ли способ получить отдельный товар?
Я отметил это как решение, но у меня есть желание спросить. Является ли это более эффективным, чем просто сближение? Причина, по которой я говорю, что это потому, что для целей этого приложения, я согласен с тем, что у всех атрибутов свойство isEditing установлено значение false. – jasongonzales
Да, это немного более эффективно. Изменяя все, вы запускаете каждого наблюдателя для каждого элемента массива. Изменяя только один, вы только стреляете в одного набора наблюдателей. В зависимости от того, как вы используете элементы, это может иметь огромное значение или вообще ничего. – GJK
Отличное объяснение. Я так и не думал об этом. – jasongonzales