2017-01-04 7 views
-1

Кажется, что this.model возвращает неопределенное в форме функцию отправки события, даже после того, как я делаю _bindall(). Функция рендеринга в порядке.Магистральная модель в форме отправить событие

initialize: function() { 
    _.bindAll(
    this, 
    "render", 
    "processFormEditJobSubmit" 
); 
}, 

Форма отправить событие:

processFormEditJobSubmit: function(e) { 
    e.preventDefault(); 
    e.stopImmediatePropagation(); 
    console.log(this.model); //undefined 
} 

Как решить эту проблему? Или я ошибся с привязкой? Я просто просто сериализую модель в sessionStorage и десериализую ее в функции отправки. Я предпочитаю избегать взлома в моем коде. Спасибо за любые указатели.

ответ

0

Там нет ошибки в коде вы показали, но пример неполной, Вот рабочий фрагмент кода:

var MyView = Backbone.View.extend({ 
 

 
    el: '#view', 
 

 
    events: { 
 
    'click button.a': 'processFormEditJobSubmit' 
 
    }, 
 

 
    initialize: function() { 
 
    _.bindAll(
 
     this, 
 
     "render", 
 
     "processFormEditJobSubmit" 
 
    ); 
 
    }, 
 
    
 
    render: function() { 
 
    this.$('button.b').click(this.processFormEditJobSubmit); 
 
    }, 
 

 
    processFormEditJobSubmit: function(e) { 
 
    e.preventDefault(); 
 
    e.stopImmediatePropagation(); 
 
    console.log(this.model.get('prop')); //not undefined 
 
    } 
 

 
}); 
 

 
new MyView({ 
 
    model: new Backbone.Model({prop: 'here'}) 
 
}).render();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script> 
 

 
<div id="view"> 
 
    <button class="a"> 
 
    event hash 
 
    </button> 
 
    <button class="b"> 
 
    jquery handler 
 
    </button> 
 
</div>

Если есть что-то я пропустил, скажем, поэтому я обновлю фрагмент.