在智能表上使用自定义条件

时间:2015-12-10 17:05:50

标签: javascript html angularjs search smart-table

如何将自定义搜索条件添加到智能表?

通常,我们设置搜索这样的列:

<input st-search="description" placeholder="Description..." type="search"/>

但有没有办法使用自定义功能进行搜索? 使用st-set-filter会改变st-search的行为,这不是我想要的。

现在,我在构建表格行时添加了条件:

<tr ng-repeat="request in r.displayedRequests"
    ng-if="r.isInArray(r.developersList, request.developers && (request.status != 'CAN')">
    <td>{{request.id}}</td>
    <td>{{request.description}}</td>
    <!-- ... -->
</tr>

执行此操作会过滤正确的行,但这会导致分页失败,因为displayedRequests未像使用st-search时那样更新。

那么,如何使用我的控制器变量来添加条件来过滤我的表格行?

(并且仍然可以使用st-search在不同的文字输入上进行全局或列搜索过滤)

1 个答案:

答案 0 :(得分:0)

  

这样做会过滤正确的行,但这会使分页失败

使用ng-if时,您不应使用ng-repeat过滤表格行。 ng-repeat表达式可以使用自己的过滤器参数,并且可以接受您自己的自定义过滤器。

ng-repeat="item in vm.items | filter: thoseIDislike"

这也会破坏你的分页,所以使用st-safe-src指令保存数据的安全副本并重复它

sample plunker

  

但有没有办法使用自定义功能进行搜索?

是的,您可以在ng-change上使用input,当您更改输入的模型值时,该功能将会运行(以防止它在每次击键时运行,i& #39; m使用ng-model-option的去抖属性

<input st-search="firstName" 
            placeholder="first name" 
            ng-model="fname" 
            ng-model-options="{ debounce: 1000 }" 
            ng-change="alertMe(fname)">

在控制器中:

$scope.alertMe = function(message) {
  if (message.length>0) {
    alert(message);
  }
}