Typescript RequireJS:使用TypeScrypt加载并启动主视图模型

Typescript RequireJS:使用TypeScrypt加载并启动主视图模型,typescript,requirejs,Typescript,Requirejs,我是新来的。 我想从主脚本App.ts加载viewmodel,并获取viewmodel的一个新实例:LienPdtUfActVM.ts 我的App.ts文件: declare var jQuery: JQueryStatic; declare var $test: any; (function ($, $test) { if (typeof ($test.module.Livret) == 'object') { return; } $easily.m

我是新来的。 我想从主脚本App.ts加载viewmodel,并获取viewmodel的一个新实例:LienPdtUfActVM.ts

我的App.ts文件:

declare var jQuery: JQueryStatic;
declare var $test: any;

(function ($, $test) {
    if (typeof ($test.module.Livret) == 'object') {
        return;
    }

    $easily.module.Livret = {
        init: function (data) {
            var LienPdtUfAct = require(["./Livret/ViewModel/LienPdtUfActVM"]);
            ??????
        },
        destroy: function (applicationId) {
        }
    };
})(jQuery, $test);
我的LienPdtUfActVM.ts:

export class LienPdtUfActVM {
    constructor() {
    }
}
我不知道如何获得这个新实例

My tsconfig.json:

{
    "compilerOptions": {
        "noImplicitAny": false,
        "noEmitOnError": true,
        "removeComments": false,
        "sourceMap": true,
        "target": "es2015",
        "module": "amd"
    },
    "compileOnSave": true
}
试试看:

我试试这个:

import LienPdtUfAct = require('./Livret/ViewModel/LienPdtUfActVM');
....
new LienPdtUfAct.LienPdtUfActVM();
TypeScrypt编译器说ok,但在执行时,我得到一个“未捕获错误:不匹配的匿名定义()模块:函数(require、exports、lienpdufact){…”错误。没有加载lienpdufactvm.js文件。

您可以这样做:

declare var jQuery: JQueryStatic;
declare var $test: any;
var myInstance: any;

(function ($, $test) {
    if (typeof ($easily.module.Livret) == 'object') {
        return;
    }

    $easily.module.Livret = {
        init: function (data) {
            var LienPdtUfAct = require(["./Livret/ViewModel/LienPdtUfActVM"]);
            myInstance = new LienPdtUfAct.LienPdtUfAct;
        },
        destroy: function (applicationId) {
        }
    };
})(jQuery, $test);
我不确定“启动”它还需要做什么,因为我不确定它使用的是什么框架。但这就是创建它实例的方式。

您可以这样做:

declare var jQuery: JQueryStatic;
declare var $test: any;
var myInstance: any;

(function ($, $test) {
    if (typeof ($easily.module.Livret) == 'object') {
        return;
    }

    $easily.module.Livret = {
        init: function (data) {
            var LienPdtUfAct = require(["./Livret/ViewModel/LienPdtUfActVM"]);
            myInstance = new LienPdtUfAct.LienPdtUfAct;
        },
        destroy: function (applicationId) {
        }
    };
})(jQuery, $test);
我不确定“启动”它还需要做什么,因为我不确定它使用什么框架。但这就是创建它实例的方式。

此代码运行:

$test.module.Livret = {
    init: function (data) {
        require(["./Livret/ViewModel/LienPdtUfActVM"], (LienPdtUfActVM) => {
            myInstance = new LienPdtUfActVM.LienPdtUfActVM();
        });
    },
    destroy: function (applicationId) {
    }
};
此代码将运行:

$test.module.Livret = {
    init: function (data) {
        require(["./Livret/ViewModel/LienPdtUfActVM"], (LienPdtUfActVM) => {
            myInstance = new LienPdtUfActVM.LienPdtUfActVM();
        });
    },
    destroy: function (applicationId) {
    }
};

我已经尝试了此操作,但出现了“此表达式不可构造”编译错误。我已对其进行了更新。导入的是一个模块对象,而您的VM类是该模块对象的一个属性。我遇到了此错误:“类型为'void'的属性'lienpdufactvm'不存在”在这种情况下,它可能是您正在使用的绑定器。您如何构建项目?我在主帖子上添加了我的tsconfig文件。我使用'AMD'模块类型。构建是由VisualStudio创建的。我已经尝试过了,但我有一个“此表达式不可构建”编译错误。我更新了它。导入的是一个模块对象,而您的VM类是该模块对象的一个属性。我得到了此错误:“属性'LienPdtUfActVM'不存在于'void'类型上”在这种情况下,它可能是您正在使用的绑定器。您如何构建项目?我在主帖子中添加了我的tsconfig文件。我使用“AMD”模块类型。构建由VisualStudio完成