2015-06-21 81 views
0

获取以下错误“Uncaught ReferenceError:$ is not defined”。我非常了解这个错误,jQuery在我的课程中不被识别。我不明白的是如何确保它被拾起。TypeScript - 在类中引用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" /> 

./classes/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

因为jQuery的将是一个全局变量,也许这个回答关于打字稿引用全局帮助:http://stackoverflow.com/questions/13252225/call-a-global-variable-inside-typescript-module或本[如何使用jQuery,RequireJS创建基本的打字稿项目,并KnockoutJS(http://stackoverflow.com/questions/25924288/how-to-create-basic-typescript-project-using-jquery-requirejs-and-knockoutjs) – jfriend00

+0

@从这些jfriend00,没有什么作品。我认为加入'declare var $:JQueryStatic;'或'import $ = require('jquery')'应该可以工作,但都没有。我不知道如何摆脱它作为其多个文件,我认为多个文件是问题。 –

回答

0

我的问题是使用外部TypeScript模块。 Nw.js使用节点require加载节点模块,而不是像RequireJS那样的客户端脚本。让我的TypeScript模块内部解决了这个问题。

另外据悉,外部打字稿模块不共享相同的上下文作为主应用程序(现在相当明显...),这就是为什么jQuery的没有得到认可。