不,这个主题不会回答我的问题,不,这个解决方案不是简单地在nav.ts文件中导入Command
。 TS是许多视图模型,文件中的一个,他们将根据需要动态加载。唯一的问题是,设置参数的类型在类的构造函数。(类型必须是“命令”)AMD模块的TypeScript动态加载结束于“无法找到符号”...'
在下面的类将被require.js加载,方法viewModel()
需要一个新的类动态地在这种情况下NavViewModel
。
个command.ts
export class Command {
...
public viewModel(name: string, callback: Function) {
require(["noext!boot/getViewModel/" + name], function (viewModel) {
callback(viewModel);
});
}
}
这是将由viewModel()
要获取的类:
nav.ts
export class NavViewModel extends kendo.Router {
constructor(command: Command) {
super();
this.route('/:name', function (name) {
command.view(name, $('div.content'));
});
this.start();
}
}
编辑: 这里是入口点
main.ts(入口点)
import lib = require("command");
var cmd = new lib.Command();
cmd.viewModel('nav', function (o) {
cmd.view('nav', $('div.header'), function() {
kendo.bind($('.header .nav'), new o.NavViewModel(cmd));
});
});
/EDIT
(在评论2的要求)问题:
Visual Studio将抛出error TS2095: Could not find symbol 'Command'
,因为“命令”类未在此模块中定义。
如果将从NavViewModel
构造函数中删除“命令”类型,程序将正常工作。有没有解决方案可以引用NavViewModel中的Command类?
这是行不通的:
/// <reference path="../../Scripts/command.ts" />
可能重复的[如何导入其他TypeScript文件?](http://stackoverflow.com/questions/12930049/how-do-i-import-other-typescript-files) – Louis
您应该显示如何定义模块的代码。 Command类是否与NavViewModel类不同?如果是这样,你需要引用全名(例如'command:Your.Module.Name.Command')。 –
我已经添加了片段,它显示了入口点。 – mat