2014-12-08 2 views
1

Фон: Я использую Backbone в первый раз. В моем проекте у меня есть одна «основная» модель - назовем ее Customer. Во все времена отображается только один Customer. У меня есть коллекция CustomerList, которая ставит в очередь Customer. Нажав кнопку, отобразится следующий Customer. CustomerView все делает рендеринг и т.д.Соотношение взглядов и моделей Backbone.js?

Проблема: я должен сделать новый экземпляр CustomerView каждый раз, когда мы переходим к следующему Customer? Другая возможность (с которой я начиналась) была всего лишь одним экземпляром представления и передачи модели функции рендеринга представления (view.render(model)). Таким образом, я могу получить следующий Customer из List, передать его функции рендеринга представления и все. Мне интересно, насколько хорошо это соответствует шаблону MVC для Магистрали? Казалось бы, более «стандартным» получить новую модель, убить текущий вид и создать новый экземпляр View.

Любые предложения опытных разработчиков базовых программ, пожалуйста? Благодарю.

ответ

2

Если единственное, что меняется, это фактическая модель, тогда вы обязательно должны поддерживать свой CustomerView и просто предоставить ему новую модель для отображения.

Это, безусловно, относится к концепциям функционального разделения MVC. CustomerView нуждается только в соответствующих данных (поставляемых моделью), чтобы выполнить задачу рендеринга представления.

Подумайте об этом - есть ли необходимо для сброса вашего CustomerView модуля? Он не должен содержать и моделировать конкретную информацию вообще, поэтому, по существу, не стоит заботиться о том, чтобы вы изменили модель - только ее нужно повторно отобразить после изменения данных.


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

+0

Спасибо за отличный ответ! :) – Oskar

+0

Вы больше всего любите @Oskar! Рад помочь, счастливая кодировка! – Lix

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