2014-12-18 4 views
0

[편집] (단어/정의가 커밋 된 후)을 누르면 updateOnEnter 메서드를 사용하여 변경 내용을 정의 필드에 저장하고 포커스 및 편집 할 수없는 필드를 잃고 싶습니다. 대신 Enter 키를 누르면 커서가 아래 줄로 이동하고 필드의 크기가 커집니다. 여기 백본 updateOnEnter가 새 줄을 만듭니다

는 CodePen입니다 : http://codepen.io/anon/pen/zxBZBe

var EntryView = Backbone.View.extend({ 
      model: new Entry(), 
      tagName:'div', 

      events:{ 
       'click .edit': 'edit', 
       'click .delete': 'delete', 
       'keypress .definition': 'updateOnEnter' 
      }, 

      delete: function(ev){ 
       ev.preventDefault; 
       dictionary.remove(this.model); 
      }, 

      edit: function(ev){ 
       ev.preventDefault; 
       this.$('.definition').attr('contenteditable', true).focus(); 
       // this.$el.addClass('editing'); 
      }, 
      close: function(){ 
       var definition = this.$('.definition').text(); 
       this.$('.definition').removeattr('contenteditable'); 
       this.model.set('definition', definition); 

      }, 

      updateOnEnter: function(ev){ 
       if(ev.which == 13){ 
        this.close(); 
       } 
      }, 

      initialize: function(){ 
       this.template = _.template($("#dictionary_template").html()); 

      }, 

      render: function(){ 
       this.$el.html(this.template(this.model.toJSON())); 
       return this; 
      } 
     }); 

답변

0

귀하의 close 메소드가 오타가 있습니다. 해당 라인이 평가 되 자마자 에러를 던지고 나머지 코드 실행을 멈 춥니 다. 할 필요가

this.$('.definition').removeattr('contenteditable'); 

this.$('.definition').removeAttr('contenteditable'); // Capital A in removeAttr. 
관련 문제