2016-06-10 4 views
-2

, что мне нужнопоставщик услуг не работает в угловых JS

js код

var app = angular.module('myApp', []); 
app.service('productService', function() { 
    var productList = []; 

    var addProduct = function(newObj) { 
    productList.push(newObj); 
    }; 

    var getProducts = function(){ 
    return productList; 
    }; 

    return { 
    addProduct: addProduct, 
    getProducts: getProducts 
    }; 
}); 




app.controller('parentController', function ($scope,productService) { 
    $scope.change = function() { 
    alert($scope.value); 
    } 
}); 

ошибка

error: [$injector:unpr] Unknown provider: productServiceProvider <- productService <- parentController 
  • мне нужно передать данные из контроллера на другой.

  • тогда я надеваю "т понять, почему его продуцирующие такие ошибки.

+0

вы определяете 'приложение' после вашего первого' app.service'. Являются ли они в разных модулях/файлах? –

+1

Я предполагаю, что 'app' используется до его создания - это опечатка ... В любом случае' module.service' должен возвращать * конструктор *; попробуйте 'module.factory', если вы хотите вернуть экземпляр службы. –

+0

ваш код работает нормально. убедитесь, что вы включили свой служебный файл в свой проект, также проверьте порядок замедления 'module' и' service'. –

ответ

-1

вы объявили службу перед модулем declearation. Так что не будет добавлен в ваш модуль

выполните следующие действия

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

затем создать контроллеры и обслуживание

app.service('productService', function() { .... 

и

app.controller('parentController', function ($scope,productService) {... 

У меня изменить свой скрипку пример проверки Link,

я создал еще один контроллер, который разделить ту же услугу.

+0

jetndr это было просто набрав код проблемы, я заявляю, что так вот – user2818060

+0

Я думаю, что сервис не является правильным выбором для общения – user2818060

+0

да, вы можете использовать родительский контроллер для совместного использования этого решения на основе данных или событий. –

1

Эта ошибка возникает из-за того, что $injector не может решить требуемую зависимость.
Чтобы исправить это, убедитесь, что зависимость определена и написана правильно.

У меня есть два предположения для этого:

  • Нацепит имя службы опечатки, в то время как скопировать код на ваш вопрос Fiddle.
    Просто проверьте ваше реальное имя службы

  • Вы переобъявить angular.moduleExample

Пример:

var app = angular.module('myApp', []); 
app.service('productService', function() { 
    return {}; 
}); 

app = angular.module('myApp', []); // <- module redeclared 
app.controller('parentController', function ($scope,productService) { 
    $scope.value = 'World' 
});  

angular.module('myApp', []) создает новый экземпляр модуля, не зная, ранее заявленных поставщиков.
Вы можете получить его для последующего использования с angular.module('myApp').

+0

Могу ли я прокомментировать о downvote? –

+0

Я не могу добавить выпадающие значения в функции addproduct(): undefined – user2818060

+0

https://jsfiddle.net/wwvgfcp3/5/ – user2818060

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