Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干-在渲染函数中设置el?_Javascript_Html_Backbone.js - Fatal编程技术网

Javascript 主干-在渲染函数中设置el?

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">&

我正在使用BackboneJS制作网页。HTML页面包含2个div,它们充当列,每个项都位于第一列或第二列。我不知道如何在集合视图上设置
el
元素。目前,我在collection
render
函数中对其进行了动态设置,但由于某些原因,在右侧列中创建了更多项(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);
}
});