2015-03-13 3 views
0

Я пытаюсь использовать сервис внутри своего углового контроллера, однако я получаю ошибку в TypeError: Cannot read property 'get' of undefined.AngularJS: TypeError: Не удается прочитать свойство 'get' of undefined

Это как мой app.js сценарий выглядит следующим образом:

angular 
    .module('ToDoApp', ['ngAnimate', 'todoService']) 
    .controller('ToDoController', ['$scope', function($scope, $http, Todo) { 

     Todo.get() 
      .success(function(data) { 
       $scope.tasks = data; 
      }); 
     // ... 
    }]); 

Он не знает о get Собственость. Это как Todo выглядит следующим образом:

angular.module('todoService', []) 
    .factory('Todo', function($http) { 
     return { 
      get: function() { 
       return $http.get('/todos'); 
      }, 
      // ... 
     } 
    }); 

И я загружаю сценарии в следующем порядке:

<script src="{{ asset('/scripts/services/todoService.js') }}"></script> 
<script src="{{ asset('/scripts/app.js') }}"></script> 

ошибка звучит для меня как контроллер не получает объект службы правильно, как эта зависимость отсутствует. Но я уже загрузил зависимость с module.

Что мне не хватает?

ответ

1

Удаленный мой предыдущий комментарий, выяснил, что у вас было не так. Вы используете нотацию массива, чтобы исправить минификация, но вы только листинг $scope, вам нужно перечислить другие, а также, что означает, что вам нужно добавить $http и ToDo:

angular 
    .module('ToDoApp', ['ngAnimate', 'todoService']) 
    .controller('ToDoController', ['$scope', '$http', 'ToDo', function($scope, $http, Todo) { 

     Todo.get() 
      .success(function(data) { 
       $scope.tasks = data; 
      }); 
     // ... 
    }]); 
Смежные вопросы