为什么我不能在控制器参数中传递$ scope和$ router?

时间:2015-07-14 08:59:55

标签: angularjs angular-new-router

(function() {
    function AppController($router) {
        $router.config([
            {path: '/courses',component: 'courses'},
            {path: '/',component: 'welcome'}
        ]);
    }
    angular.module('MainApp', ['ngNewRouter'])
        .controller('MainController', ['$router', 'CourseRepository', AppController, '$scope', function($scope) {
            $scope.$on('clicked', function(e){
                $scope.tgState = !$scope.tgState;
            })
        }]);
})();

我试图在一个控制器中连接新的角度路径和我写的一些功能。它可以工作,如果我将在2个独立的控制器中,但不知何故,当我尝试在一个控制器中连接它时它不会。

1 个答案:

答案 0 :(得分:1)

除了混淆使用相同的名称(你是否试图合并两个功能?这是你的意思"连接它们"?你不能在JS中这样做,见下文),你实例化错了。这个:

.controller('AppController', 
            ['$router', 'CourseRepository', AppController, '$scope',
            function($scope) {

应该是这样的:

.controller('AppController', 
            ['$router', 'CourseRepository', 'AppController', '$scope', 
            function($router, CourseRepository, AppController, $scope) {

如果您的控制器功能与控制器阵列本身没有相同数量的参数(减去功能),那么它总是一件坏事。此外,在此格式中,AppController需要声明为服务或工厂或提供商......

有关控制器的更多信息:https://docs.angularjs.org/guide/controller

但是,如果您尝试合并两个功能,但这不会起作用,请参阅以下简单示例:



function f() {
  alert('a');
}

function f() {
  alert('b');
}

// no, it won't alert "ab"
f();