2015-08-17 32 views
0

我正在嘗試使用angular和TypeScript創建SPA。我遇到了似乎是微不足道的問題,但幾個小時的互聯網服務沒有結果。使用Typescript的Ui路由器狀態定義

Application.ts

/// <reference path='_all.ts' /> 

module app { 
    'use strict'; 
    angular.module('app.controllers',['ui.router']) 
     .config(['$stateProvider', function ($stateProvider) { 
      $stateProvider 
       .state('review', { 
        url: "/review",`enter code here` 
        templateUrl: "assets/html/review.html", 
        controller: 'ReviewCtrl' 
       }) 
       .state('games', { 
        url: "/games", 
        templateUrl: "assets/html/games.html"//, 
        //controller: 'controllers.GamesCtrl' 
       }) 
       .state('rewards', { 
        url: "/rewards", 
        templateUrl: "assets/html/rewards.html"//, 
        //controller: 'controllers.RewardsCtrl' 
       }) 
       .state('profile', { 
        url: "/profile", 
        templateUrl: "assets/html/profile.html"//, 
        //controller: 'controllers.ProfileCtrl' 
       }) 
     }]) 
     .controller('ReviewCtrl', ReviewCtrl) 
     .controller('GamesCtrl', GamesCtrl) 
     .controller('RewardsCtrl', RewardsCtrl) 
     .controller('ProfileCtrl', ProfileCtrl) 


} 

ReviewCtrl.ts

module app { 
    'use strict'; 

    export class ReviewCtrl { 

     public static $inject = ['$scope','$stateParams']; 

     constructor(private $scope, 
        private $stateParams) 
     { 
       console.log($stateParams); 

     } 
    } 
} 

UI視圖變化成功地工作,但添加控制器的狀態對象導致「〔毫微克:AREQ]參數 'ReviewCtrl' 是不是函數,得到了未定義的「異常。

試圖排除.js文件中的狀態,配置'app.controllers'模塊,但結果相同。

我有一個猜測,Typescript包裝控制器的東西,但我試過'app.controllers.ReviewCtrl','app.ReviewCtrl','controllers.ReviewCtrl',我仍然在這裏。

+0

您使用的是什麼版本的TypeScript? – Brocco

回答

0

您是否嘗試過切換.config()和.controller()的定義?我沒有看到任何錯誤,但它可能在別的地方。例如,您也可以不在_all.ts中定義控制器。

0

AngularJS不包裹您的控制器名稱。 我有同樣的問題,你描述並通過將帶有配置功能的TS文件移動到javascript(JS)文件末尾(編譯順序)來解決它。 您可以這樣做,即向包含控制器類的文件添加/// Reference...(依賴項)。可以肯定的是,還要將angular.module(..).control(..)語句移動到您的控制器類所在的相應TS文件,以便在配置之前執行它們。