Sam*_*Sam 6 javascript filter angularjs
我想在一个有4个部分的acordeon中过滤数据.我的代码示例如下(我已经清除了代码中的acordeon代码和一些不同的部分)
<input type="text" ng-model="searchText" placeholder="Filter">
<dl>
<dt ng-repeat-start="mainCategory in mainCategories | filter:searchText" >
{{mainCategory.Name}}
</dt>
<dd ng-repeat-end="">
<dl>
<dt ng-repeat-start="subCategory in subCategories[mainCategory.ID] | filter:searchText" >
{{subCategory.Name}}
</dt>
<dd ng-repeat-end="">
<dl>
<dt ng-repeat-start="lesson in subCategoryLessons[subCategory.ID] | filter:searchText" >
{{lesson.Name}}
</dt>
<dd ng-repeat-end="">
<dl>
<dt ng-repeat-start="subLesson in subLessons[lesson.ID] | filter:searchText">
{{subLesson.Header}}
</dt>
<dd ng-repeat-end="">
{{subLesson.Content}}
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
SubCategory,Lesson和SubLesson数据来自另一个服务,它们保存在不同的数组中.
我想在此视图中过滤数据包括所有数据.但是如果我在subLesson部分(最低类别)中写了一些单词,我必须看到父部分(html元素)通过打开acordeon来达到sublesson数据.
我可以创建这样的过滤器吗?所有数据都来自具有JSON格式的Web服务.我必须考虑ajax延迟.
AFAIK,filter管道将以无限深度搜索对象的所有属性。
因此,当且仅当您的对象中包含所有内容mainCategories时,您可以将过滤器应用于第一个 ng-repeat 中的第一个集合,依此类推。subCategoriesmainCategories
例如,您的数据将如下所示:
mainCategories = [{
subCategories : [{
lessons : [{
subLessons : [{
...
}]
...
}]
...
}]
...
}]
Run Code Online (Sandbox Code Playgroud)
你将像这样使用它:
<dt ng-repeat-start="mainCategory in mainCategories | filter:searchText" >
{{mainCategory.Name}}
</dt>
<dd ng-repeat-end="">
<dl>
<dt ng-repeat-start="subCategory in mainCategory.subCategories">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |