2015-06-21 84 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的沒有得到認可。