我使用backbone已经有一段时间了,每次我得到视图的动态列表,这些视图有自己的事件和行为,我想知道它们应该如何存储。
1.在内部将视图存储在另一个视图中。这需要适当过滤的开销,但与DOM无关。+可能具有更好的内存使用率
1.只需生成视图,将其放入DOM中,并使用jquery触发视图的事件,如$('#someviewid').trigger('somecustomfunction');
-更易于编写和访问,但难以看到依赖关系,而且我不确定如果删除DOM节点是否会删除视图/模型
您有什么建议吗?
这里是扩展的第二个例子,新的视图只是附加到内部html中,而storyView本身被忽略了。但是如果我想访问这个列表中的特定视图,我必须使用DOM属性,比如id或data,然后用jquery访问器触发视图函数
Devclub.Views.StoriesList = Backbone.View.extend({
initialize: function () {
this.collection.bind('reset', this.reset, this);
this.collection.fetch();
},
reset: function (modelList) {
$(this.el).html('');
var me = this;
$.each(modelList.models, function (i, model) {
me.add(model);
});
},
add: function (model) {
var contact_model = new Devclub.Models.Story(model);
var view = new Devclub.Views.Story({
model: contact_model
});
var storyView = view.render().el;
$(this.el).append(storyView);
}
});
相反,如果我想直接调用一些视图方法,我可以将相同的视图列表存储在一个数组中,并对其进行迭代
1条答案
按热度按时间gkl3eglg1#
我认为你应该保留一份关于孩子观点的参考资料。这里有一个来自阿迪·奥斯马尼的书中的例子。