我正在使用 Google Closure 的事件处理,如下所示:
goog.events.listen(this.contentElement, goog.events.EventType.CLICK, this.openEditor);
但我需要将一个字符串作为参数传递给函数this.openeditor
我浏览了文档,但似乎无法弄清楚如何做到这一点,有人有什么想法吗?
谢谢!
我正在使用 Google Closure 的事件处理,如下所示:
goog.events.listen(this.contentElement, goog.events.EventType.CLICK, this.openEditor);
但我需要将一个字符串作为参数传递给函数this.openeditor
我浏览了文档,但似乎无法弄清楚如何做到这一点,有人有什么想法吗?
谢谢!
尝试使用goog.partial,如下所示:
goog.events.listen(this.contentElement, goog.events.EventType.CLICK, goog.partial(this.openEditor,'the string you want to pass it'));
当this.contentElement
被点击时,this.openEditor
将被调用。第一个参数是字符串,第二个参数是事件对象。
约书亚的上述回答是正确的 - 只是想添加更多信息。
在 base.js 中定义的goog.bind 与 goog.partial
在 goog.partial 中,上下文设置为当前上下文 - 它返回一个在当前上下文中执行的函数。
goog.partial = function(fn, var_args) {
var args = Array.prototype.slice.call(arguments, 1);
return function() {
// Clone the array (with slice()) and append additional arguments
// to the existing arguments.
var newArgs = args.slice();
newArgs.push.apply(newArgs, arguments);
return fn.apply(this, newArgs);
};
};
在 goog.bind (实际上检查绑定的本机实现)中,您可以将上下文作为第二个参数传递
goog.bind = function(fn, selfObj, var_args) {
//defined in base.js
....
....
return function() {
return fn.apply(selfObj, arguments);
};
}