Typescript 热毛巾(durandal)和#x2B;打字稿
这是我的第一篇帖子,祝我好运:) 我想使用热毛巾(durandal)+打字脚本,我遵循以下线程: - - - 而且还试了样品 此示例运行时未出现以下错误:Typescript 热毛巾(durandal)和#x2B;打字稿,typescript,durandal,hottowel,Typescript,Durandal,Hottowel,这是我的第一篇帖子,祝我好运:) 我想使用热毛巾(durandal)+打字脚本,我遵循以下线程: - - - 而且还试了样品 此示例运行时未出现以下错误: - JavaScript runtime error: 'exports' is undefined “/”应用程序中的服务器错误。 找不到资源。“ 起初,我决定用typescript更改我的viewmodels,在那之后,shell也会更改,但在这两种情况下,我都出现了以下错误: - JavaScript runtime error:
- JavaScript runtime error: 'exports' is undefined
“/”应用程序中的服务器错误。
找不到资源。“
起初,我决定用typescript更改我的viewmodels,在那之后,shell也会更改,但在这两种情况下,我都出现了以下错误:
- JavaScript runtime error: 'exports' is undefined
这是我的shell.ts代码(我从示例中使用):
有什么想法吗
如果可能的话,我们欢迎可行的解决方案
thanx伙计们,让我们看看会发生什么。如果您在全球范围内导出某些东西,您就在外部模块区,您需要第三方库来管理您的模块 我建议您使用RequireJS。基本上是以下类型脚本:
export function f(){
}
生成以下js:
function f() {
}
exports.f = f;
导出
是由第三方模块加载程序定义的变量。如果您没有这样的模块加载器,那么导出是未定义的。进一步解释 我对DurandalTypescriptExample也有同样的问题。
但是,本项目中的代码演示了如何在viewmodel文件中实现typescript代码,前提是您只需确保公开处置durandal所需的变量。至少有激活功能和标题变量
请参见下面的代码示例:
/// <reference path="../../dts/knockout/knockout.d.ts" //>
export class ViewModel {
title: string = 'Home View';
MyTitle: KnockoutObservableString; //MyTitle can be referenced in home.html as vm.MyTitle
public activate() {
this.MyTitle = ko.observable(this.title + " with my ko title");
return true;
}
}
export var vm = new ViewModel();
//The Durandal plugin-interface variables
export var title = vm.title;
export var activate = function () { return vm.activate(); };
//
导出类视图模型{
标题:字符串='主视图';
MyTitle:knockoutobservestring;//MyTitle可以在home.html中作为vm.MyTitle引用
公共激活(){
this.MyTitle=ko.observable(this.title+“带有我的ko title”);
返回true;
}
}
export var vm=new ViewModel();
//Durandal插件接口变量
导出var title=vm.title;
export var activate=function(){return vm.activate();};
因为我没有找到现成的项目来证明这一点,所以我不得不自己做。
请参阅github上热毛巾项目的我的版本:
我为Durandal v2创建了一个插件,支持按约定加载视图(ModuleId或ModuleId+“视图”)。这里有一个要点:我发现将类导出为requirejs/durandal模块更容易。 通过使用以下导出语句:
export = ClassName;
这允许我们实现接口,甚至可以扩展视图模型基类(不确定扩展部分),而无需重复导出xxx。。。我们希望包含在模块中的每个函数的代码
试试看
一个有效的例子:
谢谢,但我使用的是这个论坛提供的样本。您不能简单地使用示例中的一个文件。运行完整的样本,它将工作。因为它使用RequireJS如果你只想使用一个文件确保你自己加载RequireJS我试过了,我在我的帖子中提到过,它不会在服务器错误和断点命中的情况下运行,但是我正在下载,看看这次会发生什么,你自己试过了吗?这个示例很好用。您需要导航到
/Durandal
,而不是/
// Durandal "test" view model definition using typescript
import dialog = require("plugins/dialog")
class Test {
title: string = 'test';
public activate() {
dialog.showMessage("the test is working!");
return true;
}
}
// Instead of using code like:
// export var instance = new Test();
// export var activate = function() { return instance.activate(); }
// .. more Durandal specific overrides...
// Simply use...
export = Test;