Angularjs 使用NG Repeat表达式作为筛选值
我得到了一个很好的重复,其中包含一个与外键元素连接的列,所以它看起来像是希望通过搜索扩展的列Angularjs 使用NG Repeat表达式作为筛选值,angularjs,search,angularjs-ng-repeat,angularjs-filter,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].n
<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>
如何接近第二个连接的外键列
作为一个单独的问题,我还想通过单击按钮(if/else)来过滤结果,因此如果我按下按钮,我将获得所有“cd.studio[0].name”直接过滤的结果,第一个字母是a,按钮如下
<button ng-click="letter='[A]'">A</button>
| filter : search.{cd.studio[0].name} OR letter: StartsWith
A
|筛选器:搜索。{cd.studio[0].name}或字母:StartsWith
将谓词函数传递给过滤器,并在控制器中实现此谓词函数:
<div ng-repeat="cd in cds | filter : isAccepted">
$scope.isAccepted = function(cd) [
return (cd.studio[0].name.toLowerCase().indexOf($scope.search.toLowerCase()) >= 0 ||
...);
};
$scope.isAccepted=函数(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>
我以前也有过这个((ng model=“search.studio[0].name”)),但它给了我一个错误,比如“angular.js:9997 TypeError:无法读取未定义的”的属性“name”?您确定
cd.studio[0]
存在吗?请尝试“console.log(cds)”“?是的,它存在如果我只使用搜索,我会在ng重复中获得正确的数据,但我猜它会搜索所有可用的数据,因为很多时候它看起来似乎没有意义,所以我只想搜索工作室名称。如果只有错误伴随错误消息…我们可以知道问题所在,而不必猜测。发布error message.hahaha ok ok true,这里是:angular.js:9997 TypeError:无法读取未定义的属性“toLowerCase”--我将此添加到js:$scope.isAccepted=function(movie){return(movie.ProgramMetadata[0].ProgramName.toLowerCase().indexOf($scope.search.toLowerCase())>=0);};这是一个现已修复的打字错误:toLowerCase->toLowerCase。您的筛选函数还需要处理用户未输入任何内容的情况。我将把$scope.search初始化为空字符串,而不是将其保留为未定义。现在出现另一个错误:$scope.search.toLowerCase不是一个函数谢谢JB我让它工作了,我有改变角度的版本,这显然是一个错误。plnkr帮助了很多谢谢你的时间和帮助。问候
<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;
}