2012-06-25 4 views
1

Я изучаю BackboneJS. У меня есть несколько вопросов. Является ли распространенным явлением для повторного просмотра полного представления после того, как изменен contoller или модель? И нужно ли очищать контейнер в начале функции рендеринга?Должен ли я вызывать рендер после каждого изменения коллекции в BackboneJS

ответ

1

Сначала вам не нужно очищать контейнер в начале функции рендеринга (если, конечно, вы не хотите очистить контейнер).

Что касается вашего первого пункта, это, очевидно, зависит от ваших обстоятельств (насколько сложным является представление), но, хотя иногда он может заплатить, чтобы просто переписать весь вид, перезаписывая предыдущее содержимое, вам не нужно это делать. В backbone.js вы можете прослушивать изменения на particular attributes, а затем, поскольку у вас есть доступ к DOM element, просто обновите часть представления соответственно.

, например

initialize : function() { _.bind("change:name", nameChanged, this); }, 

nameChanged: function(event) { this.$el.find('.name').val(this.model.get('name'); } 
1

1) Повторное предоставление полного представления на самом деле проще, чем обновление частей зрения, до тех пор, как сама точка зрения достаточно атомарными.

2) Нет, вам не нужно очищать контейнер, и он не имеет ничего общего с базой, но с вашей DOM-библиотекой, например. jQuery и ваш шаблонный движок, например. Рули. Так что вы либо

this.$el.html(this.template(data)); // template is a compiled Handlebars template 

или

this.$el.html($('<div />').text('Whatever'); // using jQuery 

В любом случае, $el.html повторно вставки HTML к целевому элементу зрения.

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