将自定义AngularJS过滤器从1.2.28迁移到1.4.x
Migrate custom AngularJS filter from 1.2.28 to 1.4.x
我有一个使用ng-repeat迭代的复杂JSON响应。结果集中只有相对较小的属性子集显示在屏幕上,因此对结果的过滤应该限制在用户实际可以看到的值,否则过滤行为会使最终用户感到困惑。
由于我希望过滤的属性之一是一个深度嵌套的数组,因此需要一个自定义过滤器,因为内置的AngularJS filterFilter不会迭代数组元素。
我能够在AngularJS v1.2.28中工作一段时间,但不幸的是,它在迁移到v1.4.3期间似乎中断了。但是,我还没有花时间去隔离这个功能在发布节奏中哪里出了问题。
我没有在迁移指南中找到任何有用的信息来指示哪些更改了。我所知道的是,在AngularJS的最新主版本中,过滤器的实际/预期参数接收不同的值,这导致了失败。
ng-repeat过滤器表达式:
<li ng-repeat="user in users | list_filter:{establishment: {id: filterText, names: [{name: filterText}], locations: [{streetAddress1: filterText, streetAddress2: filterText, city: filterText, stateProvince: filterText, postalCode: filterText}]}}">
单个元素的数据结构示例:
data = [{
id: 234567,
name: 'John Doe',
establishment: {
id: 067915959,
locations: [{
id: '134B030365F5204EE05400212856E994',
type: 'postal',
streetAddress1: 'P O BOX 900',
city: 'Grover',
stateProvince: 'CA',
postalCode: '902340900',
isoCountryCode: 'US',
region: 'MONROE'
}, {
id: '999B030365F4204EE05400212856E991',
type: 'postal',
streetAddress1: '2590 Atlantic Ave',
city: 'Fredricks',
stateProvince: 'VA',
postalCode: '45487',
isoCountryCode: 'US',
region: 'MONROE'
}],
names: [{
name: 'Grover Central School Dst',
type: 'PRIMARY'
}, {
name: 'Grover Central School Dst',
type: 'MARKETING'
}, {
name: 'Grover CENTRAL SCHOOL DISTRICT',
type: 'LEGAL'
}]
}
}];
支撑柱塞示例:
- Plunker for version 1.2.28:http://plnkr.co/edit/KD1MmNMBEhO7X2v9yK4S?p=info
- 版本的Plunker3: http://plnkr.co/edit/OmPOOwRWCHuPutUtWOcC?p=info
编辑:
这个问题似乎与v1.3.6中引入的更改直接相关
这个问题似乎与现在应用隐式AND条件有关,但以前是隐式OR条件,这是我所希望的。如果需要旧的行为,可以将旧版本作为单独的过滤器导入。
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- AngularJS:我可以跳过函数参数回调吗
- AngularJS UI路由器不能像ng路由器那样工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如何包含特定于每个视图angularjs的javascript文件
- AngularJS:ng之后,重复$scope值未按预期更新
- Angularjs未捕获错误:迁移到V1.3时出现[$injector:modulerr]
- 迁移到AngularJS 1.2会破坏可排序包装器指令
- Angularjs 从 1.2.1 迁移到 1.3.9 会导致 html5mode 出现问题
- AngularJS,从指令迁移到组件
- AngularJS - 从 1.2.9 迁移到 1.4.9 时出错
- AngularJS 延迟加载在 1.3.x 迁移后中断,获取参数“XXCntr”不是一个函数,未定义
- 在 AngularJS 从 1.0.8 迁移到 1.2 后,JS 滑块不起作用
- AngularJS 1.2的迁移路径
- 从主干到AngularJS的迁移——有多困难
- 将自定义AngularJS过滤器从1.2.28迁移到1.4.x
- AngularJS从v1.1.5迁移到v1.5.8 Argument'登录.控制器'不是函数,未定义
- AngularJS 1.3 迁移不起作用
- AngularJS 1.5组件迁移指令,从组件中调用Page函数