我有一个观点。
//define View
var CreatePollView = Backbone.View.extend({
events: {
"click #addOption": "addOption",
"change .dynamicInput": "changeInputs"
},
initialize: function () {
_.bindAll(this, "render", "addOption", "changeInputs");
this.model.bind('change', this.render);
},
changeInputs: function () {
var newVal = $(this).val(); // this throws exception in jquery script
this.model.set("Subject", { Subject: newVal });
}, ....
如何访问触发更改事件的元素(它是一个输入元素)?
答案 0 :(得分:8)
您收到异常是因为您在_.bindAll
上呼叫changeInputs
。当你这样做时,你会说changeInputs
只要被调用就会绑定到你的对象的上下文中。
换句话说,当您引用$(this)
时,您将CreatePollView
的实例发送到jQuery,它不喜欢它。
您希望保留此绑定,因为您正在访问模型(this.model
),因此this
必须是CreatePollView
的实例。
相反,您可以从您的函数中获取事件并使用target
或其他一些信息:
changeInputs: function(e) { }
答案 1 :(得分:0)
changeInputs: function(e){
//use e.target
...
}