AngularJS自定义过滤器,对过滤器函数进行无限循环
AngularJS custom filter doing infinite loop of filter funtion
我有一个正在用数据填充的表。所以,我想写一个自定义过滤器,它将过滤位于某个范围内的数据(基本上是一个范围过滤器)。听起来很简单,但是当我实现它时,过滤器被无限地执行。
数据:
[{
"id": 6,
"columns": [
{
"header": "achievedPrice",
"type": "number",
"achievedPrice": 33190
},
{
"header": "askingPrice",
"type": "number",
"askingPrice": 133
}
]
},
{
"id": 82,
"columns": [
{
"header": "achievedPrice",
"type": "number",
"achievedPrice": 16784
},
{
"header": "askingPrice",
"type": "number",
"askingPrice": 13556
}
]
}]
表:
<tbody>
<tr ng-repeat="row in readyData.rows | filter:numRange">
<td ng-repeat="column in row.columns">
{{ column[column.header] }}
</td>
</tr>
</tbody>
<<p> 过滤器/strong> scope.numRange = function (list) {
var min = 0; // DUMMY VALUE
var max = 134; // DUMMY VALUE
if (list.columns.length) {
for (var i = 0; i < list.columns.length; i += 1) {
if (list.columns[i].askingPrice) {
if (list.columns[i].askingPrice >= min && list.columns[i].askingPrice <= max) {
return true;
}
}
}
}
return false;
};
它在表中显示正确的数据,但是它没完没了地执行。我试过在一个新的页面做同样的事情,它在那里工作得很好。如果我使用Angular的过滤器(只用于文本过滤),这个过滤器可以正常工作。
我发现问题了。这个范围过滤器没有什么问题,包含表数据的对象也包含一些其他数据,因此其他数据正在被某些组件使用,该组件也使用过滤器,因此它们继续过滤主对象。
为了解决这个问题,我在这些组件指令的范围内使用了"@"来使它们只读而不会混乱。相关文章:
- 通过过滤器函数划分数组
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 过滤器函数的 JavaScript 函数参数
- 创建一个 JavaScript 递归过滤器函数
- 从过滤器传递值作为角度中 js 函数的参数
- 如果可能的话,我需要帮助了解这个jQuery过滤器函数是如何工作的,逐行工作
- 使用 JS 寻找我的过滤器函数的较短版本
- 函数式 Javascript 算法不从过滤器返回预期结果
- 使用 reduce 在 Javascript 中构建过滤器函数
- 需要帮助在 JavaScript 中编写自定义过滤器函数
- 链+过滤器+返回值不是函数
- Javascript过滤器函数:我如何使这个过滤器出绿色水果
- AngularJS:自定义过滤器函数不触发
- 在angular中使用HTTP请求的过滤器函数
- 数组中.在服务器端Javascript中的过滤器函数
- AngularJS自定义过滤器,对过滤器函数进行无限循环
- 在Typescript中传递一个表达式作为过滤器函数的参数
- 如何传递一个额外的参数给jQuery过滤器函数
- Ramda.js通过对象值创建一个过滤器函数
- JQuery grep (. .)VS原生JavaScript过滤器(..)函数性能