控制器名称为' complatedtabs'没有注册

时间:2017-01-18 10:54:50

标签: angularjs

我的控制器

(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;的控制器未注册。

我将如何解决这个问题?

2 个答案:

答案 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