我的控制器
(function() {
'use strict';
angular
.module('portfolio')
.controller('completedTabsController', completedTabsController);
function completedTabsController($scope){
$scope.go = function(){
alert("hi");
};
}
})();
我的HTML
<button class="primary-btn add-offline pull-right" ng-click="completedTabsCtrl.openOfflineDealForm()">Add Offline Deal</button>
my module.js
$stateProvider
.state('dashboard.portfolio.complatedtabs', {
url: '/complatedtabs',
templateUrl: PORTFOLIO_URL + '/complatedtabs/complatedtabs.tpl.html',
controller: 'complatedtabs',
controllerAs: 'completedTabsCtrl'
});
但是它显示了这个错误
名称为&#39; complatedtabs&#39;的控制器未注册。
我将如何解决这个问题?
答案 0 :(得分:2)
控制器名称应来自您使用controller
方法注册的内容。试试如下。
$stateProvider
.state('dashboard.portfolio.complatedtabs', {
url: '/complatedtabs',
templateUrl: PORTFOLIO_URL + '/complatedtabs/complatedtabs.tpl.html',
controller: 'completedTabsController',
controllerAs: 'completedTabsCtrl'
});
如果您感到困惑并希望通过列出所有已注册的控制器来确定。使用下面的代码,它将为您提供所有已注册的控制器,这是一个test
代码。
// Test Code
var appModule = angular.module('myApp',[]);
angular.module('myApp').controller('MainCtrl', function($scope) {
$scope.controllers = appModule._invokeQueue.filter(function(el){
return el[0] === "$controllerProvider";
}).map(function(el){
return el[2]["0"];
});
});
angular.module('myApp').controller('TestCtrl', function(){});
angular.module('myApp').controller('TestCtrl2', function(){});
答案 1 :(得分:1)
路由声明中的控制器名称(complatedtabs
)与其定义中的控制器名称(completedTabsController
)不匹配:两者中的名称应该相同,例如只需将控制器更改为:
.controller('complatedtabs', completedTabsController);
请注意可能的拼写错误:compl A tedtabs