为什么我不能在控制器参数中传递 $scope 和 $router?
Why can't I pass $scope and $router in controller params?
(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;
})
}]);
})();
我正在尝试使用我编写的一些函数在一个控制器中连接新的 angular 路由。如果我将在 2 个单独的控制器中进行操作,它会起作用,但是当我尝试将它连接到一个控制器中时,它会以某种方式不起作用。
除了混淆使用相同的名称(你想合并两个函数吗?这就是你所说的 "connecting them" 的意思吗?你不能在 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();
(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;
})
}]);
})();
我正在尝试使用我编写的一些函数在一个控制器中连接新的 angular 路由。如果我将在 2 个单独的控制器中进行操作,它会起作用,但是当我尝试将它连接到一个控制器中时,它会以某种方式不起作用。
除了混淆使用相同的名称(你想合并两个函数吗?这就是你所说的 "connecting them" 的意思吗?你不能在 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();