2016-08-02 47 views
1

工作,我有一個代碼如下:angularJS NG重複過濾器無法與充滿活力的領域

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

    </li> 
</ul> 

名稱屬性是靜態它的正常工作。現在我需要過濾動態字段。例如:

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

    </li> 
</ul> 

在這種情況下propertyName的是動態的並且來自$scope。但這種情況下filter不起作用。

回答

1

閱讀documentation後,它看起來像你必須做的另一種方式。

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

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

    </li> 
</ul> 
+0

但我不知道算** ** propertyName的,propertyName的來自控制器動態,我必須把它過濾語法 – vaqifrv

+0

@vaqifrv這樣,它是相當容易。我更新了我的答案 –

+0

感謝您的回答,它的工作正確:) – vaqifrv

1

你可以使用這樣的事情: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} 
    ]; 
}