2013-02-25 3 views
2

Как добавить preventDefault() в команду <button>? То, что у меня ниже, не работает .. спасибоКак добавить preventDefault() backbone.js

var View = Backbone.View.extend({ 

    initialize: function() { 
     //console.log('initializing ' + this.options.blankOption); 
     this.template = $('#list-template').children(); 
    }, 
    el: '#container', 
    events: { 
     'click button' : 'render' 
    }, 
    render: function(){ 

     this.events.preventDefault(); // not working ???? 

     var data = this.model.get('data'); 

     $.each(data,function (i,v) { 
      console.log(data.text + " " + data.href); 
     }); 

    } 
}); 

ответ

5

этот.Эвенты не являются объектом события. поэтому он не работает

попробовать это:

render: function(event){ 
    event && event.preventDefault(); 

    var data = this.model.get('data'); 

    $.each(data,function (i,v) { 
     console.log(data.text + " " + data.href); 
    }); 
} 
+0

спасибо, что это значит «event &&» –

+0

Он проверяет существование события перед вызовом .preventDefault() объекта события. В этом случае это не обязательно, поскольку все связанные обработчики получают объект при их вызове. –

1

Получить объект события в качестве аргумента

render: function(evt){ 

    evt.preventDefault(); 

    var data = this.model.get('data'); 

    $.each(data,function (i,v) { 
     console.log(data.text + " " + data.href); 
    }); 

} 
1

Вы можете повторно активировать действия, добавив

this.delegateEvents(); // Re-activates the events for all the buttons 

Если вы добавьте его в функцию рендеринга основного js-представления, тогда вы можете использовать event.preventDefault() по мере необходимости.