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

Use NG-Repeat expression as filter value

我得到了一个很好的重复,其中包含一个与外键元素连接的列,所以它看起来像这样,想要通过搜索进行扩展。

<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),所以如果我按下按钮,我将直接过滤所有 "cd.studio[0].name"用第一个字母A,用这样的按钮

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

向过滤器传递一个谓词函数,并在控制器中实现这个谓词函数:

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

$scope.isAccepted = function(cd) [
    return (cd.studio[0].name.toLowerCase().indexOf($scope.search.toLowerCase()) >= 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;
}