2016-08-02 37 views
1

Ich habe einen Code wie folgt:AngularJS ng-Wiederholungs-Filter nicht mit dynamischem Bereich arbeiten

<input type="text" ng-model="filteredText"> 
<ul> 
    <li ng-repeat="item in data | filter: {Name : filteredText}"> 

    </li> 
</ul> 

Wenn Namen Eigenschaft statisch ist es richtig Arbeit. Jetzt brauche ich ein dynamisches Filterfeld. Zum Beispiel:

<ul> 
    <li ng-repeat="item in data | filter: {propertyName: filteredText}"> 

    </li> 
</ul> 

In diesem Fall Eigenschaftsname ist dynamisch und kommt aus $scope. Aber dieser Fall filter funktioniert nicht.

Antwort

1

Nach dem documentation liest, sieht es aus wie Sie es eine andere Art und Weise zu tun haben.

<input ng-show="propertyFilter == 'Name'" 
     type="text" 
     ng-model="filteredText[propertyName]" /> 

<ul> 
    <li ng-repeat="item in data | filter: filteredText"> 

    </li> 
</ul> 
+0

Aber ich weiß nicht, Graf von ** ** Eigenschaftsname, von der Steuerung kommen Eigenschaftsname dynamisch und ich muss es Syntax setzen filtern – vaqifrv

+0

@vaqifrv diese Weise ganz einfacher es ist. Ich habe meine Antwort aktualisiert –

+0

Danke für die Antwort, es funktioniert richtig :) – vaqifrv

1

Man könnte so etwas wie folgt verwenden: fiddle

<div ng-controller="MyCtrl"> 
    <div ng-repeat="line in lines | filter:custom()"> 
     <p> 
     {{line.Name}} 
     </p> 
    </div> 
</div> 

var myApp = angular.module('myApp', []) 
function MyCtrl($scope) { 
    $scope.filteredText = 'tiago'; 
    $scope.propertyName = 'Name' 

    $scope.custom = function(){ 
     var object = {}; 
     object[$scope.propertyName] = $scope.filteredText; 

     return object; 
    } 

    $scope.lines = [ 
     {Name: '23', age: 20}, 
     {Name: 'tiago', age: 23} 
    ]; 
}