1

goog.ui.Componentのサブクラスを作成しました。

/**
 * Renders the bottom pane.
 * @param {!myapp.Entity} entity An entity.
 * @param {goog.dom.DomHelper=} opt_domHelper Optional DOM helper.
 * @constructor
 * @extends {goog.ui.Component}
 */
myapp.BottomPane = function(entity, opt_domHelper) {
  goog.base(this, opt_domHelper);
  this.setModel(entity);
}
goog.inherits(myapp.BottomPane, goog.ui.Component);

ただし、JavaScriptを実行すると、Chromeコンソールはそのことを認識しUncaught TypeError: Object #<Object> has no method 'setModel'ます。私はブレークポイントを設定し、実際、私のmyapp.BottomPaneインスタンスsetModelにはプロトタイプチェーンのメソッドがないことに気づきました。ドキュメントにはすべてのコンポーネントにこのメソッドがあると記載されているため、これは奇妙です:http: //closure-library.googlecode.com/svn/docs/class_goog_ui_Component.html

なぜ私には方法goog.ui.ComponentがないのsetModelですか?goog.base(this, opt_domHelper);オブジェクトにDOMヘルパーがあるため、への呼び出しが機能していることがわかります。

4

1 に答える 1

2

キーワードを使わずObject #<Object> has no method 'setModel'にコンストラクターを実行することで、エラーを再現することができました。myapp.BottomPanenew

var bottomPane = myapp.BottomPane({id: 'my_id'}); // Results in error. 

必ずを使用newしてインスタンスを作成してください。

var bottomPane = new myapp.BottomPane({id: 'my_id'}); // Okay  
于 2012-07-28T04:43:00.450 に答える