Backbone.js 如何获取用户输入数据的值?
假设我有一个网站,上面有一些字段,我想在这些字段上运行一些计算。我有一个数量输入,在我的backbone.js视图中,我将“change”事件绑定到此输入 如何获取输入字段更改的值 我找到了这个方法(如下)来获取值,但感觉不对,因为我必须在函数中再次知道元素ID。例如,我不能用一个类来做这件事Backbone.js 如何获取用户输入数据的值?,backbone.js,Backbone.js,假设我有一个网站,上面有一些字段,我想在这些字段上运行一些计算。我有一个数量输入,在我的backbone.js视图中,我将“change”事件绑定到此输入 如何获取输入字段更改的值 我找到了这个方法(如下)来获取值,但感觉不对,因为我必须在函数中再次知道元素ID。例如,我不能用一个类来做这件事 window.Calculations=Backbone.View.extend({ (...) 活动:{ “更改输入#数量”:“更改数量” }, changeQuantity:function(){ v
window.Calculations=Backbone.View.extend({
(...)
活动:{
“更改输入#数量”:“更改数量”
},
changeQuantity:function(){
var val=$(this.el).find('input#quantity').val();
this.model.set({'quantity':val});
}
});
在HTML中:
我的做法正确吗?是否存在访问已更改对象的变量?我知道$(this.el)不是它,它只是一个容器。jQuery向函数
changeQuantity
发送一个事件对象。使用它,您可以检索更改的输入
window.Calculations = Backbone.View.extend({
//(...)
events: {
'change input#quantity': 'changeQuantity'
},
changeQuantity: function(e) {
var val = $(e.currentTarget).val();
this.model.set({'quantity': val});
}
});
我创建了一个JSFIDLE作为示例:您必须使用事件的目标,您可以将其作为回调函数的参数获取。
(我不得不自己添加一些代码来让它工作,因为您没有给我们模型代码,我用window.CalcModel(一个空模型)替换了它)
var c=new window.Calculations({model:new CalcModel(),el:'#myView'})
范例
谢谢,这很有效!我想知道为什么我在文档中的任何地方都没有看到它。实际上,因为这不是主干,主干所做的只是在渲染后将函数绑定到元素的事件。将参数传递给回调函数的是jQuery,我敢打赌jQuery文档中对此有很好的说明。但是,添加一行引用这些jquery文档页面不会有什么坏处,这是正确的。
window.CalcModel = Backbone.Model.extend({});
window.Calculations = Backbone.View.extend({
events: {
'change input#quantity': 'changeQuantity'
},
initialize: function() {
},
changeQuantity: function(evt) {
var val = $(evt.target).val();
this.model.set({'quantity': val});
$(this.el).find('#result').text('new value = ' + val);
},
render: function() {
}
});