0

입력 한 내용이 HTML 파일입니다. 내 버튼은 js 파일에 있습니다. 임 초보자 여기 가르쳐주세요. 여전히 백본을 혼동합니다 .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)라고 부를 수 있습니다. 'bind' 또는'bindAll' 대신'this.listenTo'를 사용하십시오. –

답변

1

events 버튼을 클릭하면 addItem 기능을 호출하도록 events이 설정됩니다. 따라서 동일한 기능의 텍스트 상자 #name을 삭제하면됩니다.

나는 간단하게 할 것이다 :

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

당신의 addItem 함수의 끝에서, 당신은 더 이상 필요하지 않을 때 this.collection.add(item); 그렇게 값 만 해결되면.

+0

내가 삽입해야하는 줄을 알려 주실 수 있습니까? 나는 행사가 필요한가요? – rose

+0

'events'는'# add '버튼을 클릭하면'addItem' 함수를 호출하도록 설정되어 있습니다. 따라서이 동일한 기능에서 텍스트 상자 '# 이름'을 삭제하면됩니다. 마지막으로 ('this.collection.add (item);'다음에 추가하십시오.) 결국 값은 오직 지워지 며 필요할 때만 사용할 수 있습니다. – Dominic

+1

답변에 대한 자세한 내용을 편집하십시오. 또한, 나는'. $ ('name') .val ('')'대신에'. –