2
(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 个单独的控制器中执行此操作,它会起作用,但是当我尝试将它连接到一个控制器时,它会以某种方式不起作用。

4

1 回答 1

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();

于 2015-07-14T09:42:52.137 回答