如果没有指定预定义的el,则无法渲染骨干

时间:2013-11-15 05:10:06

标签: javascript jquery backbone.js backbone-views

我要做的是创建可以移除而不删除父元素的视图。我发现当我直接在View上设置el属性时,当我.remove()时,父元素也会被删除。

我尝试创建一个只有tagName的视图,认为它会将其弹出到body,但事实并非如此,它似乎不会将其插入到页面中所有

在不删除实际包含元素的情况下从元素中完全删除视图的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

我不确定“父元素”是否为el

var DemoView = Backbone.View.extend({
    el: "#container",
    events: {
        "click button": "removeSelf"
    },
    render: function () {
        this.$el.append("<button>remove</button>");
        return this;
    },
    removeSelf: function () {
        this.remove();
    }
});
new DemoView().render();

如果您点击该按钮,系统会移除#container;如果您不想删除#container,请不要设置el属性,并且DemoView会创建一个空的div,就像这样:

var DemoView = Backbone.View.extend({
    events: {
        "click button": "removeSelf"
    },
    render: function () {
        this.$el.append("<button>remove</button>");
        return this;
    },
    removeSelf: function () {
        this.remove();
    }
});
var demoView = new DemoView();
$("#container").append(demoView.render().el);

现在,如果单击该按钮,将删除demoView,但#container将不会删除。

答案 1 :(得分:0)

如果您未指定默认el,则必须将其附加到稍后的元素view.render().$el.appendTo('body')。 body可以是指向容器元素的任何其他选择器。