我有一個關於動態加載視圖元素上的el標籤的問題。我將一個點擊偵聽器附加到一個<a>
標籤上,該標籤將動態加載視圖元素(從模板渲染它,通過ajax填充某些內容等)。現在,如下我目前已經實現了它:backbone js - 動態加載視圖:應該是啓動器,還是應該由父視圖啓動?
MyDynamicView = Backbone.View.extend({
el: "a#dynamic-launcher",
events: {
"click": "launch"
},
initialize: function(){
_.bindAll(this, "render");
},
launch: function(e){
e.preventDefault();
this.render();
},
render: function(){
// do template/ajax/whatever.
}
});
其中一期工程還算不錯,但是它是從做一些事情阻止我。例如,如果我想添加另一個事件,這是由我的新動態視圖中的某個事件觸發的,我無法這樣做(因爲事件僅顯示在父項el
的下面)。
所以另一種方法可能是擁有一個父視圖,該視圖知道哪個元素啓動動態元素,然後創建/呈現它。
velo.AppView = Backbone.View.extend({
el: "body",
events: {
"click a#dynamic-launcher": "launchDynamicView"
},
launchDynamicView: function(e){
e.preventDefault();
new MyDynamicView(); // Or something - Maybe I need to call render. Not sure.
}
});
這第二種技術更有意義嗎?
任何指導將是偉大的!
謝謝。
這不是我要找的,但 - 這將啓動視圖可以從頁面完全不同的部分鏈接觀點最終呈現的是什麼。該鏈接應該在呈現視圖之前呈現。 – idbentley 2011-05-24 20:26:27
@idbentley啊。然後你需要附加某種'Controller'來連接鏈接/按鈕,並在某個地方生成一個新的'View'對象。感覺像一個'View' - >'Controller' - >'View'關係,而不是'ParentView' - >'ChildView' – Raynos 2011-05-24 20:31:59