2013-07-04 5 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

При использовании . контроллер синтаксиса также необходимо изменить все маршруты, которые использовали ссылку на функцию, чтобы использовать ссылку на строку

Интересно: с помощью строки ссылки будет также работать при определении глобальных функций контроллера, но в настоящее время лучшей практика заключается в использовании .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; 
}]); 
+0

спасибо тонну Liviu! Я был так застрял в этом ... THX :) – ThinkTeamwork

+0

Нет проблем, также ознакомьтесь с обновленным ответом –

Смежные вопросы