Неизвестная ошибка поставщика при использовании службы $ filter

0

Я создаю гибридное приложение с использованием 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)
  • 0
    Вы минимизируете свой код?
  • 0
    @ SteamDev Я не верю, что у меня есть, и у меня нет большого опыта работы с ангуляром или ионом, чтобы узнать, так ли это. Однако я изменил фабричный оператор на .factory ('Patients', ['$ filter', function ($ filter) {на всякий случай, и я все еще получал ошибку.
Показать ещё 1 комментарий
Теги:
ionic-framework
filter
runtime-error

1 ответ

0
Лучший ответ

Ваш код предполагает, что к вашему модулю прикреплен 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];
      }
    }
});
  • 0
    Это исправило ошибку! Спасибо, что объяснили мне все это. Если вы не возражаете, не могли бы вы объяснить, почему вы вернули currentPatient || пациенты [0] вместо только currentPatient? Разве currentPatient не будет содержать объект, который "прошел" фильтр?
  • 0
    Существует вероятность, что currentPatient может быть нулевым или неопределенным, если currentID еще не установлен или если currentID не соответствует ни одному из элементов в вашем массиве. Просто подстраховка в случае currentPatient этого значения falsey.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню