#javascript #jquery #view #backbone.js
#javascript #jquery #Вид #backbone.js
Вопрос:
В моем приложении у меня их несколько tagList
, каждое содержит несколько, tags
сгруппированных по index_name
.
Я не понимаю, как мне справиться с этим с помощью базовых представлений.
У меня есть TagListView
который расширяется Backbone.View
, я думаю, я буду обрабатывать все события с помощью этого представления.
Мой главный вопрос i: должен ли я создать TagView
с функцией рендеринга, которая создавалась бы и отображалась для каждого тега в TagListView
функции рендеринга?
Вот что я делаю на данный момент, на мой взгляд: (это нормально для инициализации ?!)
<ul id="strategy-tags">
<!-- initial data -->
<script type="text/javascript">
AppData.strategyTagList = $.parseJSON('<?php echo json_encode($strategyTagList); ?>');
strategyTagListView = new App.TagListView({el : "#strategy-tags", data: AppData.strategyTagList});
</script>
</ul>
Внутри моего core.js
:
App.TagListView = Backbone.View.extend({
// dom event specific to this item.
events: {
},
initialize: function(options) {
this.el = options.el;
},
render: function() {
// let's construct the tag list from input data
_.each(options.data, function(index) {
// render index? <-- how ?
_.each(index, function(tag) {
// render tag? <-- how ?
console.log(tag);
});
});
return this;
}
});
Большое спасибо.
Ответ №1:
Я бы сказал, да, преимущество возможности повторного отображения отдельного представления «элемент» по отдельности заключается в том, что если вы вносите изменения в модель, стоящую за таким элементом, браузеру потребуется повторно отобразить только этот элемент. Что лучше для производительности.
Ответ №2:
Похоже, здесь речь идет о детализации, и я иногда задавал себе этот вопрос. Мой совет был бы не перегружать представления. Это сродни созданию объектов для всего на java — иногда достаточно простой строки. Если вы обнаружите случай повышенной детализации в будущем, вы всегда можете вернуться и изменить его.