2

我正在使用 Google Closure 的事件处理,如下所示:

goog.events.listen(this.contentElement, goog.events.EventType.CLICK, this.openEditor);

但我需要将一个字符串作为参数传递给函数this.openeditor

我浏览了文档,但似乎无法弄清楚如何做到这一点,有人有什么想法吗?

谢谢!

4

2 回答 2

8

尝试使用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将被调用。第一个参数是字符串,第二个参数是事件对象。

于 2012-11-27T13:36:37.093 回答
2

约书亚的上述回答是正确的 - 只是想添加更多信息。

在 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);
  };

}
于 2013-08-14T13:47:27.847 回答