【问题标题】:Extending factories in AngularJS TypeScript在 AngularJS TypeScript 中扩展工厂
【发布时间】:2014-10-01 09:10:20
【问题描述】:

我想用打字稿扩展一个角度工厂,这样我就可以拥有一个特定的工厂,但是当我尝试运行它时它给了我一个错误。

module App.Services {

export interface IShared {
    documents: Array<any>;
}

export class Shared implements IShared {

public static serviceId = "shared";

datacontext: App.Services.IDatacontext;
documents: Array<any>;

  constructor(datacontext: App.Services.IDatacontext) {
     this.datacontext = datacontext;

     this.datacontext.getDocuments().success((documents) => {
        this.documents = documents;
     });
  }
}

editorApp.factory(Shared.serviceId, ['datacontext',
    (datacontext) => new Shared(datacontext)
]);
} 

我想将 Shared 类扩展到下面的类

module App.Services {

export interface ITemplateShared extends IShared {

}

export class TemplateShared extends Shared implements ITemplateShared {

    public static serviceId = "templateShared";

    datacontext: App.Services.IDatacontext;

    constructor(datacontext) {
        super(datacontext);
        //this.datacontext = datacontext;
    }
}

editorApp.factory(TemplateShared.serviceId, ['datacontext', 'shared',
    (datacontext) => new TemplateShared(datacontext)
]);
}

当我开始时,它在 templateShared.js 中的第 6 行第 5 列给了我一个未处理的异常

提前致谢!

【问题讨论】:

    标签: javascript angularjs typescript


    【解决方案1】:

    类 TemplateShared 扩展 Shared

    最有可能的问题:确保Shared 被浏览器加载之前 TemplateShared。 JavaScript / TypeScript 中的加载顺序很重要。

    我建议使用外部模块来避免这个错误:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

    【讨论】:

    • 通过将它们放在同一个文件中解决了我的问题,因此我可以确保一个在另一个之前加载。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 2014-11-24
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    相关资源
    最近更新 更多