在 backbone.js 中通过 trigger() 传递的参数之上传递参数
Passing arguments on top of those passed by trigger() in backbone.js
我有一个方法可以在 Backbone 的嵌套视图中传递参数,例如:
page.get('condition') ? this.trigger('someEvent', object) : this.trigger('someOtherEvent', object);
据我了解,此代码会将对象传递给“someEvent
”或“someOtherEvent
”,作为该事件的侦听器中指定的回调的第一个参数。
我的监听器(在父视图文件中)看起来像:
this.parentView.on('someEvent', this.someFunction('extraArgument'), this);
默认情况下,如果第二个参数只是 this.someFunction
,我假设该函数的第一个参数是 object
。
我的问题是除了隐式传递的对象之外,我还想传递 'extraArgument
'。
因此,我这样构造 this.someFunction
的签名:
someFunction: function(object, extraArg) {
...
}
然而,函数内的调试语句显示 object
实际上是我手动传递的 extraArgument
,并且 extraArg
在函数范围内未定义。如何在不覆盖从子视图传递的参数的情况下传递 extraArgument
?
当你这样说时:
this.parentView.on('someEvent', this.someFunction('extraArgument'), this);
当 this.parentView.on
的参数列表正在构建时,您正在调用 this.someFunction
。然后将 this.someFunction('extraArgument')
returns 绑定为 'someEvent'
事件的回调。您的 someFunction
可能没有 return 函数,因此此 on
调用不会做任何有用的事情。
听起来您想对 this.someFunction
进行部分计算,以便创建一个类似于 this.someFunction
的新函数,但第一个参数始终是 'extraArgument'
。 Underscore 为此目的提供 _.partial
:
partial _.partial(function, *arguments)
Partially apply a function by filling in any number of its arguments, without changing its dynamic this
value.
所以你会说:
this.parentView.on(
'someEvent',
_(this.someFunction).partial('extraArgument'),
this
);
如果您想在此过程中设置 this
,也可以使用 _.bind
。
我有一个方法可以在 Backbone 的嵌套视图中传递参数,例如:
page.get('condition') ? this.trigger('someEvent', object) : this.trigger('someOtherEvent', object);
据我了解,此代码会将对象传递给“someEvent
”或“someOtherEvent
”,作为该事件的侦听器中指定的回调的第一个参数。
我的监听器(在父视图文件中)看起来像:
this.parentView.on('someEvent', this.someFunction('extraArgument'), this);
默认情况下,如果第二个参数只是 this.someFunction
,我假设该函数的第一个参数是 object
。
我的问题是除了隐式传递的对象之外,我还想传递 'extraArgument
'。
因此,我这样构造 this.someFunction
的签名:
someFunction: function(object, extraArg) {
...
}
然而,函数内的调试语句显示 object
实际上是我手动传递的 extraArgument
,并且 extraArg
在函数范围内未定义。如何在不覆盖从子视图传递的参数的情况下传递 extraArgument
?
当你这样说时:
this.parentView.on('someEvent', this.someFunction('extraArgument'), this);
当 this.parentView.on
的参数列表正在构建时,您正在调用 this.someFunction
。然后将 this.someFunction('extraArgument')
returns 绑定为 'someEvent'
事件的回调。您的 someFunction
可能没有 return 函数,因此此 on
调用不会做任何有用的事情。
听起来您想对 this.someFunction
进行部分计算,以便创建一个类似于 this.someFunction
的新函数,但第一个参数始终是 'extraArgument'
。 Underscore 为此目的提供 _.partial
:
partial
_.partial(function, *arguments)
Partially apply a function by filling in any number of its arguments, without changing its dynamic
this
value.
所以你会说:
this.parentView.on(
'someEvent',
_(this.someFunction).partial('extraArgument'),
this
);
如果您想在此过程中设置 this
,也可以使用 _.bind
。