0

HTMLページで外部から呼び出すオブジェクトのメソッドをエクスポートするにはどうすればよいですか。

JavaScriptコード:

my.namespace.FeedbackController = Class.create();
Object.extend(my.namespace.FeedbackController.prototype, {
 initialize:function(fid, fitem){
  this.fid = fid,
  this.feedback_item = fitem;
 },
 link_click : function(fstate) {
  alert(fstate);
 }
});
goog.exportSymbol('my.namespace.FeedbackController', my.namespace.FeedbackController);
goog.exportProperty(my.namespace.FeedbackController, 'link_click', my.namespace.FeedbackController.link_click);

このページには、人々がフィードバックする複数の項目があります。HTMLコード:

<script type="text/javascript">
  feedback_handlers = new Array();
  feedback_handlers[16] = new my.namespace.FeedbackController(16, 'useful');
</script>
<a href="javascript:feedback_handlers['16'].link_click('useful');">Useful</a>

リンク「便利」をクリックすると、TypeErrorが発生します:feedback_handlers['16']。link_clickは関数ではありません。

私は何かが足りないのですか?

4

2 に答える 2

2

link_clickプロトタイプ化されたメソッドです。

試す:

goog.exportProperty(my.namespace.FeedbackController.prototype, 'link_click', my.namespace.FeedbackController.prototype.link_click);

https://code.google.com/p/closure-library/source/browse/closure/goog/base.js#1538を参照して ください

于 2013-03-27T12:52:48.233 に答える
1

関数プロトタイプを拡張する方法はObject.extend、Closure-compilerによって認識されません。直接のプロトタイプ割り当てを使用する必要があります。

my.namespace.FeedbackController.prototype.initialize = function() ...

詳細な警告を付けてコンパイルすると、未定義のプロパティに関する警告が表示されます。

于 2013-03-27T13:38:28.653 に答える