2016-08-02 22 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} 
    ]; 
}