Javascript “过滤器”;“自定义值”;成角度重复

Javascript “过滤器”;“自定义值”;成角度重复,javascript,angularjs,angular-filters,Javascript,Angularjs,Angular Filters,我需要按类别筛选列表,但每个类别都是自定义的,每个用户都可以在列表中写入他们想要的任何类别 我尝试使用ng repeat创建一个列表,其中我过滤了所有重复的值(下面的代码中是唯一的:'Category'部分),我给了它们类别名称作为要过滤的值,还添加了一个“all”类别以显示所有元素: <ul class="categoriesList"> <li> <label> <input type="radio" ng-model="se

我需要按类别筛选列表,但每个类别都是自定义的,每个用户都可以在列表中写入他们想要的任何类别

我尝试使用ng repeat创建一个列表,其中我过滤了所有重复的值(下面的代码中是唯一的:'Category'部分),我给了它们类别名称作为要过滤的值,还添加了一个“all”类别以显示所有元素:

<ul class="categoriesList">
  <li>
    <label>
      <input type="radio" ng-model="searchCategory.Category" value=""> All
    </label>
  </li>
  <li ng-repeat="x in myList | unique:'Category'">
    </label>
      <input type="radio" ng-model="searchCategory.Category" value="{{x.Category}}"> {{x.Category}}
    </label>
  </li>
</ul>
  • 全部的
  • {{x.Category}}
但这种方法不起作用。我制作了一个Plunker作为示例:


我需要能够在json示例中添加我想要的任何类别,并能够过滤它们。提前感谢。

好的,您的代码的问题只是您的属性
搜索类别
没有在
$scope
上定义。添加
$scope.searchCategory={}将解决此问题。这背后的原因是ng repeat创建了自己的子作用域。下面是工作解决方案的一个片段

还有一件事遗漏了,即您需要为所有单选按钮设置相同的组,以便一次只选择一个,并且您可以通过添加
name='filter'
attribute all单选按钮来做到这一点

var-app=angular.module('app',[]);
//重复过滤器
app.filter('unique',function(){
返回函数(项目、过滤器){
if(filterOn==false){
退货项目;
}
如果((filterOn | | angular.isUndefined(filterOn))&angular.isArray(项目)){
var hashCheck={},
新项目=[];
var extractValueToCompare=函数(项){
if(角度等高线(项目)和角度等高线(过滤器)){
返回项目[过滤器];
}否则{
退货项目;
}
};
角度。forEach(项目、功能(项目){
var值检查,isDuplicate=false;
对于(var i=0;i

带有自定义值的AngularJS过滤器
文件。写(“”);
  • 全部的
  • {{x.Category}}
  • {{y.Title}}-{y.Comments}

您必须为单选按钮编写Ex-name=“rdoCategory”属性

`<ul class="categoriesList">
      <li>
        <label>
          <input type="radio" name="rdoCategory" ng-model="searchCategory.Category" value=""> All
        </label>
      </li>
      <li ng-repeat="x in myList | unique:'Category'">
        </label>
          <input type="radio" name="rdoCategory" ng-model="searchCategory.Category" value="{{x.Category}}"> {{x.Category}}
        </label>
      </li>
    </ul>`    
`
  • 全部的
  • {{x.Category}}
`

在那之后,它会起作用。

我注意到你的代码片段中有3个变化:1-你添加了
ng value
,而不仅仅是
value
,但我的实际代码与“ng value”不起作用。2-我还看到你在重复过滤器中注释了
theitems=newItems
部分,如果没有它,我将无法使用。3-您在末尾添加的filter searchSection
:true
,对于我来说,该代码仅与“filter:searchSection”一起使用。。。除此之外,您的解决方案非常有效,非常感谢!好的,那么对于ng vlaue,你可以按照之前的方式来做。2.我评论了
items=newItems
,因为您从不更改过滤器中的输入数组(这不是推荐的做法),只需返回newItems数组即可。3
:true
我刚硬编码了严格的。可以将其绑定到作用域上的变量。很高兴我能帮忙:)