2017-07-05 69 views
0

我無法弄清楚爲什麼我在角度爲1.6.4時出現此「控制器未註冊」錯誤。名稱爲x的控制器未註冊

控制器:

var app = angular.module('app', ['ngRoute']); 
app.controller("formCtrl", function($scope, $rootScope, $stateParams) { 
    $scope.id = $stateParams.id; 
}); 

指數:

<html> 
    <head> 
    <script src="js/angular.js"></script> 
    <script src="js/angular-route.js"></script> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <script src="js/formCtrl.js" type="text/javascript"></script> 
    <script src="js/app.js" type="text/javascript"></script> 
    </head> 
    <body ng-app="app"> 
    <div ng-view> 
    </div> 
    </body> 
</html> 

應用:

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

app.config(function($routeProvider) { 
    $routeProvider 
    .when("/:id", { 
    templateUrl: './partials/main.html', 
    controller: 'formCtrl' 
    }); 
}) 

回答

1

這是因爲您實際上正在爲控制器創建一個新模塊,而不是重新使用現有的應用程序模塊。

要解決這個問題,簡單地將控制器代碼如下:

angular.module('app').controller("formCtrl", function($scope, $rootScope, $stateParams) { 
    $scope.id = $stateParams.id; 
}); 

你只需要指定的angular.module()第二個參數時,意圖創建一個新的模塊。如果您想爲您的應用程序註冊控制器,組件和服務等,則只應用第一個參數:angular.module('app')

請注意,請確保您的控制器js文件在應用程序js文件之後加載。

+1

就是這樣,thx :) – Sandroggy

0

試試這個:

var app = angular.module('app', ['ngRoute']); 
app.controller("formCtrl",["$scope", "$rootScope", "$stateParams", function($scope, $rootScope, $stateParams) { 
    $scope.id = $stateParams.id; 
}]); 
+0

與您的代碼相同的錯誤。 – Sandroggy

相關問題