3

我有一个具有不同页面的应用程序,并且大致每个页面都有它自己的 js(由 typescript 编译器生成)。每个页面的 document.ready 方法都有一些共享属性,我希望将共享函数/属性放入一个基本的打字稿类。

所以它应该看起来像

 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)将通过每个页面上的脚本标记包含,然后是每个页面生成的脚本,例如...

// 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 回答