smart-table - 内容更改后更新智能表

标签 smart-table

我有一个对象数组,我使用 st-table 指令显示它们。

我按对象中某个字段的值过滤表。 问题是,一旦这些对象中的字段值发生更改,过滤就不会执行。

我认为其原因是智能表监视数组的长度,但不执行深度比较来查看任何对象内的值是否发生变化。

我该如何解决这个问题?

编辑:添加代码:

angular.module('myApp', ['smart-table'])
    .controller('mainCtrl', ['$scope', '$timeout',
    function ($scope, $timeout) {

        $scope.rowCollection = [
        {
          name: "sth odd",
          number: 1
        },
        {
          name: "sth even",
          number: 1
        }
        ];

        $scope.displayedCollection = [].concat($scope.rowCollection);

        function changeNumber(){
          $timeout(function(){
            $scope.rowCollection[1].number = $scope.rowCollection[1].number === 1 ? 2 : 1;
            changeNumber();
          }, 1000);
        }

        changeNumber();


    }
]);

http://plnkr.co/edit/IVYy5WrsiEJSRXZCqY9z?p=preview

请注意,当您搜索数字“2”时,即使第二项的属性有时是“2”有时不是, View 也不会更新。

最佳答案

为您找到了一个解决方案,不要使用 st-search,而是使用普通的 ng-model,然后按 ng-model 值进行过滤。然后在 ng-repeat 中按该值过滤

所以而不是这个

<input st-search="number" placeholder="search for number" class="input-sm form-control" type="search"/>
...

<tr ng-repeat="row in displayedCollection">
    <td>{{row.name}}</td>
    <td>{{row.number}}</td>
</tr>

这样做

<input ng-model="searchMe" placeholder="search for number" class="input-sm form-control" type="search"/>
....

<tr ng-repeat="row in filterd = (displayedCollection | filter: searchMe)">
    <td>{{row.name}}</td>
    <td>{{row.number}}</td>
</tr>

这是一个 plunker ,输入2,看看每次重做过滤的情况

关于smart-table - 内容更改后更新智能表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33527121/

相关文章:

angularjs - 智能表格与 Angular 2.0 兼容吗?

angularjs - 智能表 Angular 模块无法排序

javascript - 如何将智能表 `st-search`与ng-model集成?

angularjs - 智能表格列显示/隐藏切换

javascript - 无法使用 Angular Smart-Table 进行排序/过滤/搜索

javascript - 一页上有 2 个智能表格,分页会更改两个表格

javascript - 智能表转到所选项目

angularjs - 仅将过滤后的数据导出到 Angular 智能表中的 csv 中