2013-07-04 49 views
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

感謝, - 揚

+0

你現在也可以投票,祝賀並歡迎來到SO –

回答

3

當使用的。 控制器語法,你也需要改變使用功能參考使用字符串參考

有趣的所有路由:定義全局控制器功能,當使用字符串引用也會工作,但目前最好的做法是使用語法和避免全局函數。

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; 
}]); 
+0

謝謝你Liviu!我被這個困在... THX :) – ThinkTeamwork

+0

沒問題,也檢查出更新的答案 –