3

私は異なるページを持つアプリケーションを持っており、ほぼすべてのページに独自のjs(typescriptコンパイラによって生成される)があります。すべてのページのdocument.readyメソッドにはいくつかの共有属性があり、共有関数/プロパティを基本のtypescriptクラスに入れようとしています。

だからそれは次のように見えるはずです

 class PageX extends BasePage
    {
        onLoad => which should act like document.ready
    }

これはできますか?それが可能かどうかわかりませんか?

4

2 に答える 2

4

すべてのページに基本機能が必要な場合は、すべてのページに基本スクリプトを含める必要があります。クラスを派生させても、親の機能は子にコピーされません。

共通の動作とプロパティを含む .ts ファイルに PageBase クラスを作成し、そこから各ページ固有の動作のクラスを派生させることができます。以下のようなもの:

// Base.ts
class PageBase {
  commonProperty: any;

  constructor(doc:HTMLDocument){
    doc.onload = function(){
      alert('Common code here');
    }
  }
}

上記 (base.js) からコンパイルされた出力は、すべてのページの script タグを介して含まれ、その後に次のようなものによって生成されたページごとのスクリプトが続きます...

// pageX.ts

/// <reference path="Base.ts"/>
class PageX extends PageBase {
  constructor(){
    super(window.document);
    // Rest of my code here...
  }
}

これはあなたが何を求めていたかについてのように聞こえますか?

于 2013-03-14T01:34:35.333 に答える
1

ロジックはクラスに属していないと思います。

ただし、.ts ファイルの先頭で関数 var を宣言し、それを外部の doc.ready から呼び出すと、クラス インスタンスでその関数の変更をリッスンできます。

見る

JavaScript や jQuery の関数リスナー

状態と関数の呼び出しを リッスンする

于 2013-03-13T22:56:18.910 に答える