2014-12-17 2 views
0

Я работаю на очень простой фабрике, которая будет использоваться внутри углового контроллера. Проблема в том, что завод, похоже, не попадает в контроллер. console.log возвращает undefined, и я не могу понять, почему.Угловая фабрика не определена в контроллере

var app = angular.module('App', ['ngRoute', 'ngTouch']); 

app.controller('AppController', [ 
'$scope', 
'$rootScope', 
'myFactory', 
function($scope, $routeParams, myFactory) { 
    console.log(myFactory) 
}]); 

app.factory('myFactory', function() { 
    return 'test'; 
}); 
+0

Это точный код? После '' AppController '' отсутствует запятая. – rayners

+0

@rayners жаль, не точный код. В реальном коде отсутствуют синтаксические ошибки. Реальный код имеет много месиво, но это единственные части, относящиеся к обмену фабрикой/контроллером. –

+0

выглядит хорошо - http://jsfiddle.net/arunpjohny/x8ksfpen/1/ –

ответ

1

Проблема заключается в том, что ваш контроллер впрыскивает $ rootScope, а затем изменить его до $ routeParams в функции. Посмотрите на эту скрипту http://jsfiddle.net/wkqajL2x/6/, где я удалил эти два атрибута. Затем он отлично работает.

var app = angular.module('App', []); 

app.controller('AppController', [ 
'$scope', 
'myFactory', 
function($scope, myFactory) { 
    console.log(myFactory) 
}]); 

app.factory('myFactory', function() { 
    return 'test'; 
}); 

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

+0

Когда вы комментируете свои инъекции, имена переменных в контроллере больше не имеют значения, поэтому в этом случае его переменная '$ routeParam' (хотя, очевидно, ошибка) будет' $ rootScope'. То есть, фактически, вся точка аннотации, такая, что во время минимизации кода будет работать следующее: '.controller (« ctrl », [« $ scope »,« $ rootScope », function (a, b) {.. }]) ' –

+0

Это действительно сработало для меня! Я действительно не думал, что это будет зависеть от порядка, но это определенно проблема, поскольку переключение порядка заставляет его снова быть неопределенным. Спасибо @Leo Farmer –

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