我得到了一个很好的重复,其中包含一个与外键元素相关联的列,因此它看起来像是想要通过搜索扩展。
<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
答案 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;
}