Typescript RequireJS:使用TypeScrypt加载并启动主视图模型
我是新来的。 我想从主脚本App.ts加载viewmodel,并获取viewmodel的一个新实例:LienPdtUfActVM.ts 我的App.ts文件: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
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完成