Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用NG Repeat表达式作为筛选值_Angularjs_Search_Angularjs Ng Repeat_Angularjs Filter - Fatal编程技术网

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;
}