2013-11-15 3 views
14

Я пытаюсь создать завод в AngularJS на основе this article. Но я получаю сообщение об ошибке «dataFactory» не определено в моем контроллере. Мой код выглядит так:фабрика не определена в angularjs

MyApp.factory('dataFactory', ['$http', function($http) 
    { 
     var urlBase='/someurl/roles/'; 
     var dataFactory={}; 

     dataFactory.getRoles=function() 
     { 
      return $http.get(urlBase+'getlist'); 
     }; 

     dataFactory.addRole=function(roleName, roleCss) 
     { 
      return $http.get(urlBase+'add&name='+roleName+'&css='+roleCss); 
     }; 

     dataFactory.updateRole=function(role) 
     { 
      return $http.get(urlBase+edit&id='+role.id+'&name='+role.name+'&css='+role.css'); 
     }; 

     dataFactory.deleteRole=function(role) 
     { 
      return $http.get(urlBase+'remove&id='+role.id); 
     }; 

     return dataFactory; 
    }]); 

MyApp.controller('RoleCtrl',['$scope','$http','dataFactory', function($scope,$http,$rootScope,dataFactory) { 
    dataFactory.getRoles().then(function(res){ 
     $scope.roles = res.data.result; 
     }); 
}]); 

Что я делаю неправильно?

ответ

26

Вы упускаете строковую версию '$ rootScope'

Таким образом, вместо

MyApp.controller('RoleCtrl',['$scope','$http','dataFactory', function($scope,$http,$rootScope,dataFactory) { 

использования (обратите внимание на добавление '$rootScope'):

MyApp.controller('RoleCtrl',['$scope','$http','$rootScope','dataFactory', function($scope,$http,$rootScope,dataFactory) { 

dataFactory собирается в $ rootcope, поскольку у вас была несогласованность параметров. И тогда не было ничего, чтобы отправить в dataFactory. Таким образом, ваша ошибка.

+1

Вы спасли мой день. Иногда моя мышь просто удаляет случайные фрагменты кода, и я даже не заметил бы этого. Привет, друг! – JustBasti

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