我正在尝试使用angular.factory配方实例化一个对象。工厂代码是这样的
monevAppServices.factory('MonEvChartService', ['element','chartConfig',function monEvChartFactory(element,chartConfig) {
return MonEvChart;
}
其中element和chartconfig是MonEvChart所期望的参数,类似于
new MonEvChart(element,chartConfig);
然而,当我尝试在我的控制器中使用此服务时(注入它之后)
angular.module('monevApp.controllers', [])
.controller('NewDashboard',
['$rootScope','$scope','subscribedMonitor','MonEvChartService','$log',
function($rootScope,$scope,subscribedMonitor,MonEvChartService,$log) {
...
$scope.monevchart = new MonEvChartService($scope.element,$scope.chartConfig);
...
它会抛出类似
的错误Error: [$injector:unpr] Unknown provider: elementProvider - element - MonEvChartService
http://errors.angularjs.org/1.2.15/$injector/unpr?p0=elementProvider%20%3C-%20element%20%3C-%20MonEvChartService
at http://localhost:9000/bower_components/angular/angular.js:78:12
非常感谢任何帮助指导。谢谢!
答案 0 :(得分:3)
您没有实例化此类服务。 AngularJS为您创建这些对象,类似于Spring在Java中创建bean的方式。所以你不能像那样参数化它。如果你想创建类似的东西,你需要创建一个工厂方法,你可以执行以下操作:
但是你要做的是为图表组件构建一个指令。服务不适合您,因为它不会对UI执行任何操作。所以你想了解指令以及如何构建指令:
答案 1 :(得分:1)
好的花了一些时间并重新阅读开发人员文档,这是我提出的工作解决方案。如果有人对此有意见,我真的很想听听
//removed the constructor arguments
monevAppServices.factory('MonEvChart', [function monEvChartFactory() {
return MonEvChart;
}]);
...
//instantiating the object in the controller and passing in the arguments
monevchart = new MonEvChart(element,config);
monevchart.create();
答案 2 :(得分:0)
我想在angularJs中创建服务时我们无法添加参数的原因与依赖注入有关。大多数(如果不是全部)IoC容器都需要无参数构造函数。我认为对于angularJs注入器也是如此。