angularjs – 具有嵌套属性的ng-table过滤器
我有以下
JSON:
[{ "Id": "1","Data": {"Str1": "Ann","Str2": "Xenna"} },{ "Id": "2","Data": {"Str1": "Bob","Str2": "Bobby"},}] 我创建了ng-table来显示它.我试着添加过滤器.当我按Id过滤时,一切都按预期工作(过滤器为{“Id”:“2”}).但我无法创建适当的过滤器做Str1和Str2字段.我已经尝试过: > {“Str1”:“A”} 但上面的选项不起作用. 我的工作示例如下:http://plnkr.co/edit/MyJCqTlgvKLtSP63FYQY?p=preview 更新 感谢@Blackhole我创建了过滤器{Data:{Str1:’A’}}.但我只能在代码中进行delcare.当我尝试在HTML中添加这样的内容时,它甚至不会显示过滤器: <td data-title="'Str1'" filter="{Data:{Str1: 'text'}}"> {{ user.Data.Str1 }} </td> 解决方法
当您尝试在html中使用filter =“{Data:{Str1:’text’}}”时,输入未显示标题中的模板原因,请查看
source code.
<div ng-repeat="(name,filter) in column.filter"> //!!!! right here it's not supported <div ng-if="column.filterTemplateURL" ng-show="column.filterTemplateURL"> <div ng-include="column.filterTemplateURL"></div> </div> <div ng-if="!column.filterTemplateURL" ng-show="!column.filterTemplateURL"> <div ng-include="'ng-table/filters/' + filter + '.html'"></div> </div> </div> 就在这里< div ng-repeat =“(名称,过滤器)在column.filter”>它不是挖掘嵌套对象 Ngtable不支持默认模板中的嵌套过滤器,因此您可以创建自己的模板,它将支持它.看看example of header template. 注意 这个column.filter是如何初始化的,它是从td标签source上的filter属性解析的 var parsedAttribute = function (attr,defaultValue) { return function (scope) { return $parse(el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr)) (scope,{ $columns: columns }) || defaultValue; }; }; var parsedTitle = parsedAttribute('title',' '),headerTemplateURL = parsedAttribute('header',false),// here filter = parsedAttribute('filter',false)(),filterTemplateURL = false,filterName = false; ... columns.push({ .... filter: filter, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |