Ich habe folgende Filter:Angular-Filterdienst mit Versprechen
app.filter("findDivision", function(divisionService) {
var isWaiting = false;
var returnValue = null;
function myFilter(input) {
var translationValue = "Loading...";
if(returnValue)
{
translationValue = returnValue;
} else {
if(isWaiting === false) {
isWaiting = true;
divisionService.getDivisionById(input).then(function(data) {
console.log("GetTranslation done");
returnValue = data[0].name;
isWaiting = false;
});
}
}
return translationValue;
}
return myFilter;
});
Wo die Funktion i in divisionService
wie folgt aussieht nennen:
getDivisionById: function (id) {
var d = $q.defer();
$http({
url: api.getUrl2('division'),
method: "GET",
params: {filters: {id: {EQUAL: id}}}
}).success(function (data, status, headers, config) {
d.resolve(data);
}).error(function (data, status, headers, config) {
api.handleError(data);
console.log(data);
d.reject(data);
});
return d.promise
}
Leider der Ausgang dieses sieht wie folgt aus:
Kann mir jemand sagen, warum das passiert ist ning? und wie kann ich den richtigen Wert bekommen?
Filter sollen synchron sein, async-Dienst kann nicht verwendet werden. – dfsq
Sie könnten es aber schaffen, in diesem Fall brauchen Sie statusbehafteten Filter: https://code.angularjs.org/1.3.7/docs/guide/filter In Ihrem Fall fügen Sie einfach eine Zeile hinzu, bevor Sie 'myFilter. $ Stateful = zurückgeben wahr; '. – dfsq