在backbone.js中存储和访问视图列表的更好方法是什么?
我已经使用主干网很长一段时间了,每次我得到具有自己事件和行为的视图的动态列表时,我都想知道应该如何存储它们。我有两种方法,我的想法是在backbone.js中存储和访问视图列表的更好方法是什么?,backbone.js,Backbone.js,我已经使用主干网很长一段时间了,每次我得到具有自己事件和行为的视图的动态列表时,我都想知道应该如何存储它们。我有两种方法,我的想法是 在另一个视图中内部存储视图。这需要适当过滤的开销,但有点独立于DOM+,可能会有更好的内存使用率 只需生成视图,将它们放入DOM中,并使用jquery触发视图的事件,如$('someviewid').trigger('somecustomfunction')-更容易编写和访问,但依赖项更难查看,而且如果我只是删除DOM节点,我不确定视图/模型是否会被删除 你推荐什
$('someviewid').trigger('somecustomfunction')代码>-更容易编写和访问,但依赖项更难查看,而且如果我只是删除DOM节点,我不确定视图/模型是否会被删除
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);
}
});
相反,如果我想直接调用某些视图方法,我可以将同一个视图列表存储在数组中,并对其进行迭代我认为您应该保留子视图的引用。下面是Addy Osmani的一个例子
Backbone.View.prototype.close = function() {
if (this.onClose) {
this.onClose();
}
this.remove(); };
NewView = Backbone.View.extend({
initialize: function() {
this.childViews = [];
},
renderChildren: function(item) {
var itemView = new NewChildView({ model: item });
$(this.el).prepend(itemView.render());
this.childViews.push(itemView);
},
onClose: function() {
_(this.childViews).each(function(view) {
view.close();
});
} });
NewChildView = Backbone.View.extend({
tagName: 'li',
render: function() {
} });
你能提供一些代码吗?这个问题有点抽象,很难理解,你的确切意思是什么。。。它的目标是在解决您遇到的问题时进行详尽的练习