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と呼び出されます。最初のパラメーターは文字列になり、2 番目のパラメーターはイベント オブジェクトになります。

于 2012-11-27T13:36:37.093 に答える
2

上記の Joshua からの回答は正しいです。さらに情報を追加したいだけです。

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 (バインドのネイティブ実装を実際にチェックする) のように、コンテキストを 2 番目のパラメーターとして渡すことができます。

goog.bind = function(fn, selfObj, var_args) {
  //defined in base.js  
  ....
  ....
  return function() {
    return fn.apply(selfObj, arguments);
  };

}
于 2013-08-14T13:47:27.847 に答える