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('')'代替。 –

相关问题