我有一个功能
function propValueFilter (toFilterArr, filterFunction) {
return toFilterArr.filter(filterFunction);
};
和工厂
backpackrApp.factory('itemsFactory', function(propValueFilter) {
factory.getBackpackById = function(id) {
return backpacks.propValueFilter(function(element) {
return element.id == id;
});
};
return factory;
});
我在Web控制台中的组件$ injector中收到了一个未知的提供程序错误。
如何正确注入功能?我想创建一组Helper函数,我可以在许多控制器/ factorys等中使用。
先谢谢
答案 0 :(得分:1)
您应该将此函数包装在另一个服务/工厂(在下面的示例中名为filterService)并将其注入项目工厂,例如:
backpackrApp.factory('itemsFactory', ['filterService', function(filterService) {
factory.getBackpackById = function(id) {
return backpacks.propValueFilter(function(element) {
return element.id == id;
});
};
return factory;
}]);
答案 1 :(得分:0)
间距问题?应该是:
function propValueFilter (toFilterArr, filterFunction) {
return toFilterArr.filter(filterFunction);
};
答案 2 :(得分:0)
我认为你想要创建一个辅助函数,你可以从工厂注入它们(假设你知道你在使用Array.filter做什么):
backpackrApp.factory('myUtil', function() {
var obj = {
obj.propValueFilter = function(toFilterArr, filterFunction) {
return toFilterArr.filter(filterFunction);
};
};
return obj;
});
backpackrApp.factory('itemsFactory', function(myUtil) {
var itemsFactoryObj = {
backpacks = []; // set somewhere
obj.getBackpackById = function(backpacks, id) {
return myUtil.propValueFilter(function(element) {
return element.id == id;
});
};
};
return itemsFactoryObj;
});
backpackrApp.controller('TestCtrl', function(itemsFactory) {
$scope.backpack = itemsFactory.getBackpackById(1);
});