Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 如何获取用户输入数据的值?_Backbone.js - Fatal编程技术网

Backbone.js 如何获取用户输入数据的值?

Backbone.js 如何获取用户输入数据的值?,backbone.js,Backbone.js,假设我有一个网站,上面有一些字段,我想在这些字段上运行一些计算。我有一个数量输入,在我的backbone.js视图中,我将“change”事件绑定到此输入 如何获取输入字段更改的值 我找到了这个方法(如下)来获取值,但感觉不对,因为我必须在函数中再次知道元素ID。例如,我不能用一个类来做这件事 window.Calculations=Backbone.View.extend({ (...) 活动:{ “更改输入#数量”:“更改数量” }, changeQuantity:function(){ v

假设我有一个网站,上面有一些字段,我想在这些字段上运行一些计算。我有一个数量输入,在我的backbone.js视图中,我将“change”事件绑定到此输入

如何获取输入字段更改的值

我找到了这个方法(如下)来获取值,但感觉不对,因为我必须在函数中再次知道元素ID。例如,我不能用一个类来做这件事

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() {

    }

});