2016-04-12 8 views
2

Ich habe mich am letzten Tag damit beschäftigt, herauszufinden, was ich falsch gemacht habe. Ich versuche, einen Wert in einen Filter zu übergeben und eine Zeichenfolge aus einem Hash zurückzugeben, der aus einer Rückgabe von einer Factory erstellt wurde. Ich kann es in einer ähnlichen Funktion arbeiten lassen, die die Fabrik nicht aufruft, aber wenn ich von der Fabrik zurückkomme, kann ich die Schnur nicht anzeigen, obwohl die passende Schnur in der Konsole angezeigt wird. Fehle ich hier wirklich leicht?Winkelförmiger benutzerdefinierter Filter wird nicht angezeigt

-Controller hier:

var app = angular.module('app', []); 
app.controller('ctrl', ['$scope', function($scope) { 
    $scope.stuff = 1; 
}]) 

Fabrik hier:

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; 
    } 
}]) 

Filter hier:

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 ist hier.

https://plnkr.co/edit/c4hYrRrdbBF9M2o5tVV5

Antwort

5

Sie können kein Versprechen in einem Filter verwenden, da die Filter beliebig ausgeführt wird und wenn Ihr Versprechen endet Rückkehr die Funktion bereits ein Ergebnis der Benutzeroberfläche.

+0

Danke Dalorzo! – Wes

Verwandte Themen