2013-10-22 72 views
0

我開始學習Backbone.js Views,對於我的實踐目的,我嘗試了下面的代碼。如何在骨幹視圖概念中觸發功能

<body> 
<div id="search_container"></div> 
<input type="text" id="field"/> 
<script type="text/javascript"> 
SearchView = Backbone.View.extend({ 
    initialize: function(){ 
     this.render(); 
    }, 
    render: function(){ 
     //var template = _.template($("#search_template").html(), {data:'ggg'}); 
     console.log(this.$el.attributes); 
     $('#search_container').html(this.$el); 
    }, 
    events: { 
     "click #field": "doSearch" 
    }, 
    doSearch: function(event){ 
     console.log('ssss'); 
     alert('working!!'); 
    } 
}); 
var search_view = new SearchView({el:"#field"}); 
</script> 
</body> 

如果你觀察我的代碼,我添加文本字段到div。它的工作fine.If你textField點擊它不叫doSearch()功能。

我該如何解決這個問題。

+0

你確定輸入的id是'field',它在'this。$ el'裏面嗎?也許你可以告訴我們生成的HTML :) – pleasedontbelong

回答

0

你所做的是縮寫形式delegateEvents。此方法使用jQuery.on引擎蓋下,你的選擇將過濾後裔的當前觀點el,見骨幹delegateEvents

this.$el.on(eventName, selector, method); 

看到這個小提琴:

JSFiddle

0

這裏的問題#field不在視圖內,而是視圖$ el本身。讓它工作改變你的事件哈希到

events: { 
    "click": "doSearch" 
}