获取以下错误"未捕获的ReferenceError:$未定义"。我非常理解错误,jQuery在我的课堂上并没有得到认可。我不明白的是如何确保它被拿起来。
这是我到目前为止所得到的:
./ app.ts
/// <reference path="references.ts"/>
import Layout = require("./classes/Layout");
class Brooklyn {
elementId: string;
constructor(elementId: string) {
this.elementId = elementId;
}
setupLayout() {
console.log("building layout");
var layout = new Layout(this.elementId);
layout.build();
}
}
./ references.ts
/// <reference path="dfiles/jquery.d.ts"/>
/// <reference path="dfiles/jqueryui.d.ts"/>
/// <reference path="dfiles/jquery.ui.layout.d.ts"/>
/// <reference path="dfiles/node.d.ts" />
/// <reference path="classes/Layout.ts" />
./类/ Layout.ts
/// <reference path="../dfiles/jquery.d.ts"/>
class Layout {
static layoutOuter: JQueryLayout;
elementId: string;
westSelector: string;
eastSelector: string;
constructor(elementId: string) {
this.elementId = elementId;
}
build() {
console.log("init layout");
this.westSelector = "body > .ui-layout-west"; // outer-west pane
this.eastSelector = "body > .ui-layout-east"; // outer-east pane
Layout.layoutOuter = $(this.elementId).layout(); // Error from this line
}
}
export = Layout;
我已将jquery.d.ts
引用添加到Layout.ts文件中,但这也没有帮助,也没有将jQuery作为引用传递给类。每个单独的类如何访问jQuery?
答案 0 :(得分:0)
我的问题是使用外部TypeScript模块。 Nw.js使用节点require
来加载节点模块,而不是像RequireJS那样的客户端脚本。使我的TypeScript模块内部解决了这个问题。
还了解到外部TypeScript模块与主应用程序不共享相同的上下文(现在相当明显......),这就是jquery未被识别的原因。