2015-03-27 2 views
1

Я новичок в ember.js, и одна из вещей, которые мне очень трудно понять, - это двухстороннее сообщение данных и событий между родителями и дочерние компоненты.Ember.js: Приняты рекомендации по обмену между дочерними и родительскими компонентами

Мне удалось решить более простую проблему в отношении ведения списка элементов, отслеживания которых был активным и изменения активного дочернего элемента из родительского компонента. Шаблон суммируется в this jsbin.

Мне интересно, это лучший подход к решению моей проблемы? Несмотря на то, что ember был «очень самоуверенным», я нахожу, что существует так много разных способов достижения одного и того же, поэтому вы просто ищете некоторую уверенность или перенаправление.

ответ

1

Лучшие практики можно обобщить как «данные вниз», «действия вверх». Вы хотите как можно больше передавать данные до вашего компонента и действия до родителя, чтобы изолировать дочерний компонент от родителя, чтобы его можно было использовать где угодно. Избегайте отправки данных с помощью двухсторонних привязок, поскольку это больше не будет использоваться по умолчанию в Ember 2.0. (По умолчанию привязка будет одним из способов.)

Главное изменение в jsbin, которое я сделал бы, вместо отправки parentCtrl = this в вашем шаблоне, я бы отправил itemSelected = itemSelected. Тогда в вашем элементе:

isActive: Ember.computed('itemSelected', function() { 
    if (this.get('itemSelected') !== null) { 
     return this.get('itemSelected.description'); 
    } else { 
     return false; 
    } 
}), 
+0

Спасибо @Gaurav, хорошо знать, что я на правильном пути и спасибо за разъяснение того, как максимизировать изоляцию –

Смежные вопросы