如何在backboneJS事件中使用多个参数

时间:2014-02-28 10:41:59

标签: javascript jquery backbone.js backbone-events

我需要传递onchange函数的第二个参数 (在这种情况下,'border-radius')我传递了范围输入,这个值需要传递到javascript上的console.log中。 它已经适用于'value'变量。 'value'变量返回一个整数,但cssAttribute变量返回'Object'而不是'border-radius'字符串

HTML

  (...)
  <input type="range" min="0" max="200" onchange="sidebar.setElementAttributes(this.value,'border-radius')">
  (...)

JS:

 var Sidebar = Backbone.Model.extend({
        setElementAttributes: function(value,cssAttribute)
        {
           this.set({ property: value });
               console.log(cssAttribute); //<- works!
        }
        });

        window.sidebar = new Sidebar;   

        sidebar.on('change:property',function(model,value,cssAttribute)
        {
            console.log(value); // <- works!
            console.log(cssAttribute); //<- doesn't work, value is 'Object' instead border-radius'
        });

1 个答案:

答案 0 :(得分:2)

您可以使用触发器的选项参数(2nd)将值从触发器传递给侦听器。

它将作为第三个参数发送给你的听众。

代码:

var Sidebar = Backbone.Model.extend({
    setElementAttributes: function (value, cssAttribute) {
        this.set({
            property: value
        }, {
            cssAttribute: cssAttribute
        });
    }
});

window.sidebar = new Sidebar;

sidebar.on('change:property', function (model, value, options) {
    console.log(options.cssAttribute);
});

Demo