2013-05-13 99 views
0

使用內聯模板,我需要讓學生只是一個小名單,對我提出的聯模板,使元素和附加click事件...不觸發單擊事件 - 而我在骨幹

但我無法獲得元素事件觸發器和它的模型...

我該如何做到這一點?

我的代碼:

define("appView", ["backbone"], function(Backbone){ 

    "use strict" 

    var appView = Backbone.View.extend({ 
     template:_.template("<li><%= name %></li>"), 
     events:{ 
      "click" : "listTrigger" 
     }, 
     initialize:function(){ 
      this.render(); 
     }, 
     render:function(){ 
      return this.template(this.model.toJSON()); 
     }, 
     listTrigger:function(){ 
      console.log("List triggered", this.model); //not working... 
     } 
    }); 

    return{ 
     getView: appView 
    } 

}) 

回答

1

你有不同的問題在這裏:

  1. 視圖的事件周圍綁定到視圖的el,但你既不填充el與HTML也不是你把視圖的el進入DOM。顯然你在做html = v.render(),然後將html添加到DOM。
  2. 您的模板無法使用通常的Backbone方法。你最終會以<div><li>...</li></div>作爲你的HTML,這不是有效的HTML;給出無效的HTML,瀏覽器可能會嘗試糾正它,並造成大混亂。

如果你希望你的看法是單個<li>那麼你想使用tagName告訴骨幹使用一個<li>,然後把剛纔的內容爲template

tagName: 'li', 
template: _.template('<%= name %>') 

然後你」 d具有解決您的render填充this.el

render: function() { 
    this.$el.html(this.template(this.model.toJSON())); 
    return this; 
} 

return this是常規的,所以我補充說,到,這樣做,可以讓你做這樣的事情:

$('ul').append(v.render().el) 

這種模式不僅是方便,但也會被人認爲已經與骨幹工作立即被識別。

另外,我假設,無論是使用該視圖將投入實例成<ul><ol>,或者<menu>元件的那些被the only valid parents for an <li>

允許父元素

ulolmenu