Я занимаюсь этим в течение последнего дня, пытаясь понять, что я делаю неправильно. Я пытаюсь передать значение в фильтр и вернуть строку из хеша, которая была построена из возврата с фабрики. Я могу заставить его работать в аналогичной функции, которая не вызывает фабрику, но всякий раз, когда я возвращаюсь с фабрики, я не могу отобразить эту строку, даже если соответствующая строка отображается в консоли. Я пропустил что-то действительно легкое здесь?Угловой пользовательский фильтр не отображается
контроллер здесь:
var app = angular.module('app', []);
app.controller('ctrl', ['$scope', function($scope) {
$scope.stuff = 1;
}])
Фабрика здесь:
app.factory('factory', ['$q', function($q) {
var list = [
{set1: 1,set2: 'name1'},
{set1: 2,set2: 'name2'}
];
var list2 = [
{set1: 1,set2: 'name6'},
{set1: 2,set2: 'name7'}
]
var service = {
getList: getList
}
return service;
function getList(id) {
var deferred = $q.defer();
if (id === 1) {
deferred.resolve(list);
} else if (id === 2) {
deferred.resolve(list2);
}
return deferred.promise;
}
}])
фильтр здесь:
app.filter('customFilter', ['factory', function(factory) {
var factoryHash = {};
return function(input, id) {
factory.getList(id)
.then(function(res) {
angular.forEach(res, function(value) {
this[value.set1] = value.set2;
}, factoryHash);
console.log('factoryHash', factoryHash[input])
return factoryHash[input];
})
}
}])
plnkr здесь.
https://plnkr.co/edit/c4hYrRrdbBF9M2o5tVV5
Спасибо Далорзо! – Wes