我一直在反覆遇到這個問題。我有一個輸入視圖,我想在每個keyUp事件上設置和更新事物。問題是set被調用時觸發一個change事件,它重新渲染視圖導致輸入失去焦點。因此,在用戶鍵入一個字符後,輸入失去焦點,無法輸入。重新渲染視圖導致輸入失去焦點
發生這種情況的另一種情況是,當用戶單擊一個輸入時,我想向輸入周圍的div添加一個類,以便它改變顏色。這當然會導致視圖重新渲染,輸入失去焦點。我不能簡單地爲輸入做單獨的視圖,因爲輸入是在我想要重新呈現的div內。
下面是一個簡單的例子。
itemView = Backbone.View.extend({
events: {
"keyup .itemInput": "inputKeyUp"
}
initialize: function(){
this.model.view = this;
this.bind('change', this.render());
this.render();
},
render: function(){
$(this.el).html($(ich.itemView(this.model.toJSON())));
return this;
},
inputKeyUp: function(e) {
this.model.set({name: $(this.view.el).find('input[type=text]').first().val()});
},
});
到目前爲止,我已經使用{沉默:真正}周圍變得和手動更新的東西,但這造成混亂。
是的視圖已經有用戶輸入的文本,但我想根據他們的類型做其他事情的視圖。當他們點擊輸入我想作爲選擇它調用其change事件來設置模型重新呈現,看起來選擇這將導致以失去它的重點之一視圖。 – Dan 2012-01-06 22:20:24