Я создаю гибридное приложение с использованием Ionic framework, и я создал фабрику для хранения массива объектов. Я хотел использовать службу $ filter для захвата объекта в массиве с определенным идентификатором. Это код, который у меня есть прямо сейчас. Я получил идею этой реализации из этого вопроса: в Angular мне нужно искать объекты в массиве.
angular.module('prototype.services', [])
.factory('Patients', function($filter) {
var currentID;
var currentPatient = $filter('patientFilter')(patients, {id: currentID}, true);
var patients = [{
id: 1,
name: 'Alexander Hamilton'
}];
return {
all:function() {
return patients;
},
add: function(patient) {
patients.push( {
name: patient.name
})
},
setID: function(id) {
currentID = id;
},
getID: function() {
return currentID;
},
};
});
Насколько я понимаю, это должно сработать с тех пор, как я ввел $ filter на фабрику, которую я создал. Я новичок в угловатости, поэтому может быть что-то очевидное, что мне не хватает.
Полная ошибка:
ionic.bundle.js:26794 Error: [$injector:unpr] Unknown provider: patientFilterFilterProvider <- patientFilterFilter <- Patients
http://errors.angularjs.org/1.5.3/$injector/unpr? p0=patientFilterFilterProvider%20%3C-%20patientFilterFilter%20%3C-%20Patients
at ionic.bundle.js:13438
at ionic.bundle.js:17788
at Object.getService [as get] (ionic.bundle.js:17941)
at ionic.bundle.js:17793
at Object.getService [as get] (ionic.bundle.js:17941)
at ionic.bundle.js:32697
at Object.<anonymous> (services.js:6)
at Object.invoke (ionic.bundle.js:17995)
at Object.enforcedReturnValue [as $get] (ionic.bundle.js:17834)
at Object.invoke (ionic.bundle.js:17995)
Ваш код предполагает, что к вашему модулю прикреплен patientFilter
:
angular.module('prototype.services', [])
.filter('patientFilter', function(){/*...*/}) // doesn't exist, so unknown provider errors
Что вы, вероятно, захотите сделать, это следующее...
angular.module('prototype.services', [])
.factory('Patients', function($filter) {
var currentID;
var patients = [{
id: 1,
name: 'Alexander Hamilton'
}];
return {
// ... other factory methods ...
getCurrentPatient: function(){
var currentPatient = $filter('filter')(patients, { // use generic 'filter' filter
id: currentID
}, true);
return currentPatient || patients[0];
}
}
});
currentPatient
может быть нулевым или неопределенным, если currentID
еще не установлен или если currentID
не соответствует ни одному из элементов в вашем массиве. Просто подстраховка в случае currentPatient
этого значения falsey.