Javascript 主干-在渲染函数中设置el?
我正在使用BackboneJS制作网页。HTML页面包含2个div,它们充当列,每个项都位于第一列或第二列。我不知道如何在集合视图上设置Javascript 主干-在渲染函数中设置el?,javascript,html,backbone.js,Javascript,Html,Backbone.js,我正在使用BackboneJS制作网页。HTML页面包含2个div,它们充当列,每个项都位于第一列或第二列。我不知道如何在集合视图上设置el元素。目前,我在collectionrender函数中对其进行了动态设置,但由于某些原因,在右侧列中创建了更多项(div)。这是代码。我做错什么了吗?有更好的方法吗 HTML代码段: <div class="columns" id="col1"></div> <div class="columns" id="col2">&
el
元素。目前,我在collectionrender
函数中对其进行了动态设置,但由于某些原因,在右侧列中创建了更多项(div)。这是代码。我做错什么了吗?有更好的方法吗
HTML代码段:
<div class="columns" id="col1"></div>
<div class="columns" id="col2"></div>
这个怎么样?渲染时不要动态修改父级,也可以选择渲染到哪个子DIV
<div class="columnWrapper">
<div class="columns"></div>
<div class="columns"></div>
</div>
var application = application || {};
application.MenusView = Backbone.View.extend({
// Your collection view's "el" is now the wrapper div
el: "div.columnWrapper",
initialize: function(initialmenus) {
console.log("Initializaing MenusView");
this.collection = new application.Menus(initialmenus);
this.render();
},
render: function() {
var count = true;
this.collection.each(function(item) {
this.renderMenu(item, count);
count = !count;
}, this);
},
renderMenu: function(item, count) {
var menuView = new application.MenuView({
model: item
});
var childIndex = count ? 1 : 2;
this.$(".columns:nth-child(" + childIndex + ")").append(menuView.render().el);
}
});
var application=application |{};
application.MenusView=Backbone.View.extend({
//集合视图的“el”现在是包装器div
el:“div.columnWrapper”,
初始化:功能(初始化菜单){
log(“初始化菜单视图”);
this.collection=新应用程序.菜单(初始菜单);
这个。render();
},
render:function(){
var计数=真;
this.collection.each(函数(项){
此.renderMenu(项目,计数);
计数=!计数;
},这个);
},
renderMenu:函数(项、计数){
var menuView=new application.menuView({
型号:项目
});
var childIndex=计数?1:2;
此.$(“.columns:n个子(“+childIndex+”).append(menuView.render().el);
}
});
renderMenu功能中的选择器有问题:(除此之外,我认为这是一个伟大的想法,我必须看看它是否工作良好,有什么问题?错误消息?日志?如果您不参与,将无法帮助您…PS:缺少引号。修复了答案。是的,Bernardo,缺少引号,很抱歉没有提及它。很好,工作正常。谢谢!
<div class="columnWrapper">
<div class="columns"></div>
<div class="columns"></div>
</div>
var application = application || {};
application.MenusView = Backbone.View.extend({
// Your collection view's "el" is now the wrapper div
el: "div.columnWrapper",
initialize: function(initialmenus) {
console.log("Initializaing MenusView");
this.collection = new application.Menus(initialmenus);
this.render();
},
render: function() {
var count = true;
this.collection.each(function(item) {
this.renderMenu(item, count);
count = !count;
}, this);
},
renderMenu: function(item, count) {
var menuView = new application.MenuView({
model: item
});
var childIndex = count ? 1 : 2;
this.$(".columns:nth-child(" + childIndex + ")").append(menuView.render().el);
}
});