Отображение выбранной модели с боковой панели в информационной панели


Я работаю над приложением, которое имеет боковую панель с правой стороны. Это показывает коллекцию. Каждая модель коллекции имеет поведение select.

В верхнем центре страницы у меня есть один независимый основной вид, который действует как "информационная панель" , и этот вид должен обновить информацию, когда я выбираю один из видов в боковой панели

Как я могу это сделать? Я думаю, что каждое представление в боковой панели должно иметь событие" selected " с аргументом модели, и мой вопрос заключается в том, как я могу послушайте, что изменилось в моем представлении информационной панели в позвоночнике.js???

1 2

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. :- )