Son günlerde, neyi yanlış yaptığımı anlamaya çalışıyorum. Bir filtreye bir değer iletmeye çalışıyorum ve bir fabrikadan bir dönüşten oluşturulmuş bir hashtan bir dize döndürüyorum. Fabrikayı aramayan benzer bir işlevle çalışabilirim, ancak fabrikadan döndüğümde, uygun dizenin konsolda gösterilmesine rağmen dizeyi görüntüleyemiyorum. Burada gerçekten kolay bir şey mi kaçırıyorum? BuradaAçısal özel filtre görüntülenmiyor
Denetleyici: Burada
var app = angular.module('app', []);
app.controller('ctrl', ['$scope', function($scope) {
$scope.stuff = 1;
}])
Fabrika:
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;
}
}])
Filtre burada:
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 burada. Filtre herhangi bir şekilde idam ve söz fonksiyonunu sona erdiğinde zaten kullanıcı arayüzüne bir sonuca dönmek olacak çünkü
https://plnkr.co/edit/c4hYrRrdbBF9M2o5tVV5
Teşekkürler Dalorzo! – Wes