javascript - ngTables 中的 Angular 自定义过滤

标签 javascript angularjs filtering ngtable

我正在尝试在 ngTables 中进行一些自定义过滤(类似于 this example ),但使用文本输入字段。我有一组带有标准文本输入过滤器的列,对于其中一些我想使用我自己的过滤函数,而不是默认的 Angular $filter('filter')(array, params.filter()) ,但类似于 $filter('myOwnFilter')(array, params.filter())

过滤发生在我的 Controller 中:

var orderedData = params.filter() ? $filter('filter')(array, params.filter()) : array;

我有什么:

<td class="text-left" data-title="'Name'" filter="{ 'Column': 'myOwnFilter' }" data-sortable="'Column'">
  {{ array.Column }}
</td>

和模板:

<script type="text/ng-template" id="ng-table/filters/myOwnFilter.html">
  <input type="text" name="myOwnFilter" data-ng-model="params.filter()[name]" data-ng-if="filter == 'myOwnFilter'" class="input-filter form-control"/>
</script>

最佳答案

正如这个问题中的回答 https://stackoverflow.com/a/27296677/61577您必须在 Controller 中使用自定义“比较器”函数作为第三个参数。一个简单的例子

var myCustomComparator = function(value, searchTerm) {
    return (value || '').indexOf(searchTerm) > -1;
}

然后在你的 getData 回调中

var orderedData = params.filter() ? $filter('filter')(array, params.filter(), myCustomComparator) : array;

请注意,如果您需要为不同的列/字段使用不同的比较器,您必须检查 params.filter()。

filter comparator 的 Angular 文档

关于javascript - ngTables 中的 Angular 自定义过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264139/

相关文章:

javascript - 如何使用 pdf.js 呈现 pdf 文件?

mvvm - 如何在 AngularJS View 中实现条件逻辑

javascript - 使复选框在 Angular 中不可点击

python - numpy 数组的快速迭代

javascript - 使用包含键数组对的对象过滤对象嵌套对象列表

javascript - 使用 Lodash 过滤对象数组以仅包含键

javascript - 预加载图像的最佳方式

javascript - 如何使用 Xively 从网站发送命令?

c# - 在 WebBrowser 中调用一个脚本,并等待它完成运行(同步)

javascript - 我应该如何使用 Angular 中的 Promise 设置异步错误处理?