如何将控制器放在外部文件中

时间:2015-07-02 10:33:27

标签: angularjs typescript

当我在app app配置文件之外时,我遇到让控制器工作的问题。当我将类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行的编辑器中,路由被加下划线为错误,并显示:

  

找不到'路线'

在浏览器中我收到错误说:

  

ReferenceError:未定义路由

我做错了吗?

PS:我在日食下工作,不知道是否重要。

1 个答案:

答案 0 :(得分:0)

  

我做错了吗?

如果您的文件的 root 级别没有export关键字,则表示您想要使用--outscript标记。

  

ReferenceError:未定义路由

这是一种常见的挫败感:https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md#runtime-errors

  

在app.controller行的编辑器中,路由被加下划线为错误,并且说

这是因为您的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