2013-11-15 96 views
1

我想要做的是創建視圖,可以移除而不刪除父元素。我發現,當我在視圖上直接設置el屬性時,當我的.remove()它,父元素也被刪除。骨幹視圖不呈現沒有預定義的el指定

我試過用tagName創建一個視圖,認爲它只是彈出它到body,但事實並非如此,它似乎並沒有將其插入到頁面中。

什麼是正確的方式來完全刪除一個元素的視圖而不刪除實際的包含元素?

回答

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不會。

0

如果您不指定默認el,則必須將它們追加到後面的元素,例如view.render().$el.appendTo('body')。主體可以是指向容器元素的任何其他選擇器。