4

在我的脚本标签中尝试使用不同的语法来启动控制器时,我遇到了一个问题。

为什么会这样:

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

4

1 回答 1

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;
}]);
于 2013-07-04T21:17:38.257 回答