我正在使用AngularJs构建应用程序。
我有一个函数(createStarMarkup),它根据数字返回一堆HTML。
function(rating) {
var rating = Number(rating);
var markup = "";
//Do some stuff
return markup;
}
我希望能够在我的应用程序中多个位置使用此功能,因此我将其定义为Utility模块中的服务。
var app = angular.module('utilities', []);
app.factory('createStarMarkup', function(rating) {
var rating = Number(rating);
var markup = "";
// Do some stuff
return markup;
});
然后我添加'实用程序' module作为我的其他模块的依赖项,并将服务注入控制器。
var app = angular.module('reviews', ['ionic', 'utilities']);
app.controller('reviewController',
['$scope', '$ionicActionSheet', 'createStarMarkup', function($scope, $ionicActionSheet, createStarMarkup){...});
这会产生以下错误
Error: [$injector:unpr] Unknown provider: $ratingProvider <- $rating <- createStarMarkup
如果我删除createStarMarkup函数中的rating参数,则错误消失。我使用工厂是在正确的轨道上还是我应该研究其他东西?
答案 0 :(得分:3)
您的工厂定义无效。请按以下方式更改
app.factory('createStartupServices', ['', function() {
return {
getMarkup: function(rating) {
var rating = Number(rating);
var markup = "";
// Do some stuff
return markup;
},
}
}
]);
您的控制器需要按以下方式获取方法getMarkup
var app = angular.module('reviews', ['ionic', 'utilities']);
app.controller('reviewController',['$scope', '$ionicActionSheet', 'createStartupServices', function($scope, $ionicActionSheet, createStartupServices){
//createStartupServices.getMarkup(123);
});
答案 1 :(得分:1)
问题在于:
app.factory('createStarMarkup', function(rating) {
您正在尝试注入一个名为rating
的服务,该服务不存在。
你想要做的是:
app.factory('createStarMarkup', function() {
Service = {};
Service.myFunction = function(rating) {
var rating = Number(rating);
var markup = "";
// Do some stuff
return markup;
}
return Service;
});
通过这种方式,您可以在任何控制器/指令/服务中注入createStarMarkup并使用如下函数:
createStarMarkup.myFunction(rating);