使用NG-Repeat表达式作为过滤值

时间:2016-04-18 14:56:05

标签: angularjs search angularjs-ng-repeat angularjs-filter

我得到了一个很好的重复,其中包含一个与外键元素相关联的列,因此它看起来像是想要通过搜索扩展。

<input type="text" ng-model="search" placeholder="Search On Studio Name">

<div ng-repeat="cd in cds | filter : search">
 <div>{{cd.colorcode;}}</div>
 <div>{{cd.studio[0].name}}</div>
</div>

问题是当我尝试添加示例时,我没有在工作室名称上获得过滤结果:

| filter : search.{cd.studio[0].name}

如何处理第二个连接的外键列?

作为一个单独的问题,我想按下按钮点击结果(if / else),所以如果我按下按钮,我将得到所有&#34; cd.studio [0]。命名&#34;使用第一个字母A直接过滤,使用这样的按钮

<button ng-click="letter='[A]'">A</button>
| filter : search.{cd.studio[0].name} OR letter: StartsWith

2 个答案:

答案 0 :(得分:3)

将谓词函数传递给过滤器,并在控制器中实现此谓词函数:

<div ng-repeat="cd in cds | filter : isAccepted">

$scope.isAccepted = function(cd) [
    return (cd.studio[0].name.toLowerCase().indexOf($scope.search.toLowerCase()) >= 0  || 
            ...);
};

答案 1 :(得分:0)

你应该使用如下过滤器:

<input type="text" ng-model="search.studio[0].name" placeholder="Search On Studio Name">

<div ng-repeat="cd in cds | filter : search">
    <div>{{cd.colorcode;}}</div>
    <div>{{cd.studio[0].name}}</div>
</div>

如果您想通过按钮实现此功能,请执行以下操作:

<input type="text" ng-model="originalSearch.studio[0].name" placeholder="Search On Studio Name">
<button ng-click="searchFunc()" > Search it!</button>
<div ng-repeat="cd in cds | filter : finalSearch">
    <div>{{cd.colorcode;}}</div>
    <div>{{cd.studio[0].name}}</div>
</div>
控制器中的

$scope.searchFunc = function(){
  $scope.finalSearch = $scope.originalSearch;
}