2016-01-30 45 views
1

我想通過添加路由到我的Rails應用程序中使用角度取代ajax的特定頁面來學習路由。下面是我得到的控制檯錯誤。角度顯示TypeError:無法讀取未定義的屬性'狀態'

Uncaught Error: [$injector:modulerr] Failed to instantiate module testApp due to: TypeError: Cannot read property 'state' of undefined

這就是我的定義。

app.js

app = angular.module("testApp", ['ui.router']); 

app.config([ 
    function ($stateProvider, $urlRouterProvider) { 
     $stateProvider 
      .state('mylistings', { 
       url: '/mylistings', 
       templateUrl: '/views/mylistings.html', 
       controller: 'dashboardCtrl' 
      }); 
    } 
]); 

app.controller('dashboardCtrl', function ($scope, $http, $stateParams) { 
$scope.testing="testdata" 
}); 

mylistings.html

{{testing}} 

在這種情況下http://localhost:3000/dashboard就是我想要路由的URL。有人能告訴我這裏做錯了什麼嗎?

+1

no config'/ dashboard'顯示在config中。 – charlietfl

+0

@charlietfl我希望它是類似http:// localhost:3000 /儀表板#mylistings ... – Abhilash

+0

http:// localhost:3000 /儀表板是從我的Rails應用程序,而不是角。我想在這裏路由,因爲我想要一個不同的部分本地主機:3000 /儀表板#mybookings和其他一些 – Abhilash

回答

1

問題在於配置功能的定義。 如果使用數組app.config([]),這意味着您要爲爲縮小而準備的依賴項編寫安全代碼。語法是:

app.config(['$arg1', '$arg2', function ($arg1, $arg2) { 
    }]); 

所以,當代碼已經過壓縮,你會得到這樣的:

app.config(['$arg1', '$arg2',function(a,b) {}]); 

您的例子app.js改變配置到下面的代碼,如果你想編寫代碼的安全縮小(如果你不使用ng-annotate):

app = angular.module("testApp", ['ui.router']); 

app.config(['$stateProvider','$urlRouterProvider', 
    function ($stateProvider, $urlRouterProvider) { 
     $stateProvider 
      .state('mylistings', { 
       url: '/mylistings', 
       templateUrl: '/views/mylistings.html', 
       controller: 'dashboardCtrl' 
      }); 
    } 
]); 

app.controller('dashboardCtrl', function ($scope, $http, $stateParams) { 
    $scope.testing="testdata" 
}); 

,或者您可以從配置功能刪除[]

app.config(function ($stateProvider, $urlRouterProvider) { 
... 
}): 
+1

基於他得到的錯誤'_Cannot讀取屬性'狀態'的undefined_',這就是問題所在。從配置函數定義中刪除'[]'。 關於url問題,這是基於配置的第二個問題,但這不是問題所在。 – Buli

相關問題