2015-07-02 44 views
0

我在控制器在我的應用程序配置文件之外時工作有問題。當我把類testCtrl(幾乎沒有修改 - 刪除模塊,導出和靜態字段)到配置文件它工作正常。如何將控制器放在外部文件中

這是我的外部控制器文件ctrl.ts:

module routing.Controllers 
{ 
export class testCtrl 
{ 
    static $inject = ["$scope"]; 

    constructor($scope : any) 
    { 
     $scope.events = this; 
    } 

    showAlert() 
    { 
     alert('Clicked'); 
    }  
} 
} 

這是我的文件,配置routing.ts:

declare var angular: any; 

var app = angular.module("routing", ['ngRoute']); 

app.controller('Test', routing.Controllers.testCtrl); 

app.config(($routeProvider) => { 
    $routeProvider 
    .when('/index',{ templateUrl: 'views/LogIn.html',controller:'Test' }) 
    .otherwise({ redirectTo: '/index' }); 
}) 

在app.controller線編輯器中的路由下劃線作爲錯誤,它說:

Could not find 'routing'

而在瀏覽器中我得到錯誤說:

ReferenceError: routing is not defined

我做錯了什麼? PS:我在eclipse下工作,不知道它是否重要。

回答

0

Am I doing something wrong?

如果你沒有在級別文件的export關鍵字則意味着要使用--outscript標籤。

ReferenceError: routing is not defined

這是一個共同的無奈:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md#runtime-errors

In editor in app.controller line the routing is underlined as error and it say

這是因爲你的IDE不支持簡單編譯背景支持。快速解決的辦法是添加一個reference標籤。一個更好的解決辦法是使用一個tsconfig.json文件:https://github.com/TypeStrong/atom-typescript/blob/master/docs/tsconfig.md

解決方案

使用基於文件的模塊:http://basarat.gitbooks.io/typescript/content/docs/project/modules.html

隨着像需要JS運行時。您將需要--module amd

更多編譯:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1

+1

所以如果我想進口類,我應該使用進口{} testCtrl從「./controllers/ctrl」; (ctrl.ts是在控制器文件夾內)? (它告訴我這個文件不是一個模塊) –

相關問題