我在尝试使用不同的语法在脚本标记中启动控制器时遇到问题。
为什么这样做:
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
答案 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;
}]);