2013-12-02 3 views
1

У меня есть функцияangular.js вводит функцию в фабрику

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; 
}); 

Я получаю Неизвестную ошибку поставщика в компоненте $ инжектора в Webconsole.

Как правильно ввести функцию? Я хочу создать набор функций Helper, которые я могу использовать во многих контроллерах/и т.д.

цехах

Заранее спасибо

+0

Я не могу сказать, что вы просите. Угловой не будет вводить функцию propValueFilter, вам нужно создать ее как фабрику, я думаю, или предоставить фабрику или службу, которая возвращает объект с вашими полезными функциями в качестве свойств. Вы пробовали [egghead.io tutorials] (http://egghead.io/lessons/angularjs-providers) и читали страницы [вроде этого] (http://henriquat.re/basics-of-angular/services-dependency -инъекция/services-and-dependency-injection-in-angularjs.html) на инъекции зависимостей? –

+0

Да, я попробовал уроки egghead.io. но вторая ссылка выглядит хорошо. Я очень новичок в поиске, – moveax

+0

, что помогло мне решить проблему, спасибо – moveax

ответ

1

Вы должны обернуть эту функцию в другой сервис/завод (названный filterService в примере ниже) и ввести это в заводских изделий, как:

backpackrApp.factory('itemsFactory', ['filterService', function(filterService) { 

factory.getBackpackById = function(id) { 
return backpacks.propValueFilter(function(element) { 
    return element.id == id; 
}); 
}; 
return factory; 
}]); 
0

Разнос выпуск в возврате 1-й функции? Должно быть:

function propValueFilter (toFilterArr, filterFunction) { 
    return toFilterArr.filter(filterFunction); 
}; 
+0

sry, copypasta. есть пробел. – moveax

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); 
}); 
Смежные вопросы