Отображение выбранной модели с боковой панели в информационной панели
Я работаю над приложением, которое имеет боковую панель с правой стороны. Это показывает коллекцию. Каждая модель коллекции имеет поведение select
.
В верхнем центре страницы у меня есть один независимый основной вид, который действует как "информационная панель" , и этот вид должен обновить информацию, когда я выбираю один из видов в боковой панели
Как я могу это сделать? Я думаю, что каждое представление в боковой панели должно иметь событие" selected " с аргументом модели, и мой вопрос заключается в том, как я могу послушайте, что изменилось в моем представлении информационной панели в позвоночнике.js???
1 ответ:
Это похоже на то, что хорошо обслуживается шаблоном агрегатора событий. Дерик Бейли опубликовал действительно хорошую статью по этому вопросу, которую вы можете прочитать здесь.
Я вытянул свой позвоночник.Просмотр так, чтобы все представления имели объект агрегатора событий, доступный для них таким образом.Backbone.View.prototype.eventAggregator = _.extend({}, Backbone.Events);
В основном, когда ваш вид модели выбран, ваш вид.eventAggregator вызовет некоторое пользовательское событие.
sidebarView.eventAggregator.trigger('selected', this.model);
Или что-то в этом роде сортировать. С помощью магистральных событий вы можете передавать параметры через функцию триггера слушателю событий. В приведенном выше примере я передал модель с конкретным событием.
В вашем основном представлении вы бы слушали это событие.
mainView.eventAggregator.on('selected', myFunction, this); myFunction: function(model) { // Some code to execute - model is available through param }
Это довольно полезная модель. Просто не забудьте отменить привязку события, когда вы закрываете свой mainView. :- )