如何启动Controller?

时间:2013-07-04 21:00:26

标签: angularjs

我在尝试使用不同的语法在脚本标记中启动控制器时遇到问题。

为什么这样做:

function ListCtrl($scope, Projects) {
    $scope.projects = Projects;
}

而这不是:

myProject.controller('ListCtrl', ['$scope', 'Projects', function ($scope, Projects) {
    $scope.projects = Projects;
}]);

这是完整的plunker http://plnkr.co/edit/Po16QUxmu3M3FqIGqJ3Y?p=preview

提前致谢, - Jan

1 个答案:

答案 0 :(得分:3)

使用。控制器语法时,您还需要更改使用函数引用的所有路由以使用字符串引用

有趣的是:使用字符串引用在定义全局控制器函数时也会起作用,但目前的最佳做法是使用 .controller 语法并避免全局函数。

var myProject = angular.module('project', ['firebase']).
        value('fbURL', 'https://angularjs-projects.firebaseio.com/').
        factory('Projects', function(angularFireCollection, fbURL) {
            return angularFireCollection(fbURL);
        }).
        config(function($routeProvider) {
            $routeProvider.
                    when('/', {controller:'ListCtrl', templateUrl:'list.html'}).
                    otherwise({redirectTo:'/'});
        });

// function ListCtrl($scope, Projects) {
//     $scope.projects = Projects;
// }

// next 3 lines will work
myProject.controller('ListCtrl', ['$scope', 'Projects', function ($scope, Projects) {
   $scope.projects = Projects;
}]);