2015-07-07 2 views
1

Я изучаю this Backbone учебник и наткнулся на этот фрагмент кода:Когда мне не следует использовать представление самообновления?

var LibraryView = Backbone.View.extend({ 
    el:$("#books"), 

    initialize:function(){ 
     this.collection = new Library(books); 
     this.render(); 
    }, 
    ... 
}); 

Автор объясняет, что this.render() делает вид визуализации, когда его конструктор вызывается.

Когда вы не хотите, чтобы представление самообновлялось?

+1

Я думаю, что ответ «хорошая практика». То, что у вас есть, будет работать, но лучше убедиться, что функция «initialize» имеет только одну ответственность - инициализацию представления. Эта ясность будет погашаться вовремя! Что касается того, когда - множество более крупных SPA инициализируют представления на одном этапе, а затем визуализируют базовый шаблон и визуализируют представления поверх этого позже. Я лично считаю, что «идеи самореализации» редко бывают хорошей идеей. – olan

+0

Вижу. Итак, когда/где должно быть установлено свойство this.collection', если оно не было создано? – pushkin

+0

'this.collection' идеально подходит там, где он есть. Вы просто получите «var lib = new LibraryView(); lib.render() '. – olan

ответ

2

Метод визуализации делает не что иное, как добавление HTML в DOM с помощью методов jQuery html или append. Где вы выбираете вызов метода рендеринга в представлении, является архитектурным выбором.

Считается, что магистраль применяет шаблон MV *, где модели привязаны непосредственно к виду.
Таким образом, представление будет отображаться при создании экземпляра и иметь возможность отображать себя при изменении модели.

Тем не менее, Backbone оставляет много решений разработчику и представляет собой гибкую библиотеку. Нет ничего, что технически мешает вам использовать объекты управления, которые управляют потоком представлений; как таковой, другой объект может создавать и повторно отображать представление.

var view = new Bb_View(); 
view.render(); 

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

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