routeProvider和定义控制器

时间:2013-10-18 03:31:12

标签: angularjs

如何正确定义控制器?

我想使用这种形式的定义:

“在实际应用程序中,您应该为您的应用程序使用Angular模块的.controller方法,如下所示:”

myApp.controller('GreetingCtrl', ['$scope', function($scope) {
$scope.greeting = 'Hola!';
}]);

我的代码

    var project = angular.module('project', [])
        .config(function($routeProvider) {
        $routeProvider.
            when('/', {controller:'Ctrl1', templateUrl:'tabb_1.html'}).
            when('/tab1', {controller:'Ctrl1', templateUrl:'tabb_1.html'}).
            when('/tab2', {controller: 'Ctrl2', templateUrl:'tabb_2.html'}).
            when('/tab3', {controller: 'Ctrl3', templateUrl:'tabb_3.html'}).
            otherwise({redirectTo:'/'});
    });



project.controller('Ctrl1', '$scope', function(scope){

});

project.controller('Ctrl2','$scope', function(scope){

});

project.controller('Ctrl3', '$scope', function(scope){

});

我得到“错误:参数'Ctrl1'不是函数,得到了字符串” 错误在哪里?

2 个答案:

答案 0 :(得分:2)

示例控制器代码使用括号表示法来定义控制器。当您想要最小化生产代码时,这种表示法很有用,它明确地告诉angular它应该期望的依赖性。在您的代码中,您需要删除名称和函数之间的额外$ scope或添加括号。

没有括号:

project.controller('Ctrl1', function($scope){

});

括号:

project.controller('Ctrl1', ['$scope', function($scope){

}]);

答案 1 :(得分:1)

想出来。 我输了'[]'

这是正确的方法

project.controller('Ctrl1', ['$scope', function(scope){

}]);