0

我的輸入是在HTML文件中我的按鈕在js文件中。我是初學者,請教我。我仍然困惑backbone.js如何在我點擊按鈕後清除backbone.js中的文本框?

var ListView = Backbone.View.extend({ 
    el: $('body'), 
    events: { 
     'click button#add': 'addItem' 

    }, 
    initialize: function() { 
     _.bindAll(this, 'render', 'addItem', 'appendItem'); 

     this.collection = new List(); 
     this.collection.bind('add', this.appendItem); 

     this.counter = 0; 
     this.render(); 
    }, 

    render: function() { 
     $(this.el).append("<button id='add' class='btn btn-primary clear'>Add Items</button>"); 
     $(this.el).append("<ul class='ul_adjust'></ul>"); 
     _(this.collection.model).each(function (item) { 
      appendItem(item); 
     }, this); 
    }, 

    addItem: function() { 

     var item = new Item(); 
     item.set({ 
      part1: $("#name").val() 
     }); 

     this.collection.add(item); 
    }, 
    appendItem: function (item) { 
     var itemView = new ItemView({ 
      model: item 
     }); 

     $('ul', this.el).append(itemView.render().el); 
    }, 


}); 

你知道了嗎? 我刪除了一些不必要的,但我認爲這將插入這裏的某處。

+0

您應該使用'this。$ el'而不是'$(this.el)'。此外,要查看視圖中的元素,請使用'this。$(selector)'。骨幹集合已經有'each'函數,你可以直接調用它'this.collection.each(function(){...},this);'。使用'this.listenTo'而不是'bind'或'bindAll'。 –

回答

1

您的events已設置,因此當您單擊#add按鈕時,它會調用addItem函數。所以你只需要清除文本框#name在這個相同的功能。

我只想做:

$("#name").val(""); 

addItem功能結束後,this.collection.add(item);所以價值,只有當你不再需要它清除。

+0

你可以給我哪一行,我應該插入?我需要事件嗎? – rose

+0

你的'events'設置爲當你點擊'#add'按鈕時,它調用'addItem'函數。所以你只需要在這個相同的函數中清除文本框'#name'。最後一次(在this.collection.add(item);'後面加上它),所以這個值只在最後被清除,在你需要的時候它仍然可用。 – Dominic

+1

請在您的答案中編輯其他詳細信息。另外,我會使用'this。$('#name')。val('')'代替。 –

相關問題