为什么我不能在控制器参数中传递$scope和$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;
            })
        }]);
})();

我试图在一个控制器中连接新的角路由与我写的一些函数。如果我在两个单独的控制器中连接它就能工作,但当我试图在一个控制器中连接它时,它就不能工作了。

除了混淆使用相同的名称(你试图合并两个函数吗?这就是你说的"把他们联系起来"吗?你不能在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();

相关内容

  • 没有找到相关文章

最新更新