angularjs - ngTable.reload() 无法刷新 ng-table 第二次不显示新数据

标签 angularjs angularjs-directive angularjs-ng-repeat ngtable

ngTable.reload()无法刷新ng-table does not show new data second time我正在绑定(bind) ng-table 数据的 index.js 的代码。

第一次数据绑定(bind)正常工作。第二次数据没有正确绑定(bind)。它显示了以前的数据。
所以基本上是无法绑定(bind)数据,无法刷新

 $http.get("GetValidationsDataForTable", { params: { "entity": entity } })
                 .success(function (response) {
                     $scope.tableValue = response;
                     $scope.tableParams = [];
                     $scope.tableParams = new ngTableParams(
                         {
                             page: 1,            // show first page
                             count: 5          // count per page
                         },
                         {
                             groupBy: 'Entity',
                             total: $scope.tableValue.length,
                             getData: function ($defer, params) {

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

                                 var orderedData = params.sorting() ?
                                         $filter('orderBy')($scope.tableValue, $scope.tableParams.orderBy()) : scope.tableValue;

                                 orderedData = params.filter ?
                            $filter('filter')(orderedData, params.filter()) :
                            orderedData;
                                 params.total(orderedData.length);
                                 $defer.resolve($scope.tableValue.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                             }
                         });
                     $scope.tableParams.reload();
                 })

index.cshtml 的代码
  <table id="tblValue" ng-table="tableParams" class="customTable" style="table-layout:fixed;max-width:100%">
                    <tbody ng-repeat="group in $groups">


                        <tr ng-hide="group.$hideRows" ng-repeat="validation in group.data" style="table-layout:fixed;">

                            <td data-title="'Property'" style="width:10%;text-align:left !important;overflow:hidden;">
                                <label id="lblProperty" ng-model="validation.Property" for="Property" ng-hide="editmode" style="width:97%;word-wrap:break-word; overflow-wrap:break-word;">{{validation.Property}}</label>

                                <select class="form-control" data-ng-model="validation.PropertyChoice" data-ng-options="choice.Name for choice in CurrentEntityProperties" ng-change="ChangeValidationRules(validation)" ng-show="editmode" style="width:100%; ">
                                    <option value="" style="margin-left:25px">-Select Property-</option>
                                </select>

                            </td>
                        </tr>
                    </tbody>
                </table>

为什么 ngtable.reload() 不起作用,也没有第二次显示新数据?

最佳答案

解决方案是:

$scope.tableParams = {};
    $http.get("GetValidationsDataForTable", { params: { "entity": entity } })
                 .success(function (response) {
                     $scope.tableValue = response;
                     $scope.tableParams = [];
                     $scope.tableParams = new ngTableParams(
                         {
                             page: 1,            // show first page
                             count: 5          // count per page
                         },
                         {
                             groupBy: 'Entity',
                             total: $scope.tableValue.length,
                             getData: function ($defer, params) {

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

                                 var orderedData = params.sorting() ?
                                         $filter('orderBy')($scope.tableValue, $scope.tableParams.orderBy()) : scope.tableValue;

                                 orderedData = params.filter ?
                            $filter('filter')(orderedData, params.filter()) :
                            orderedData;
                                 params.total(orderedData.length);
                                 $defer.resolve($scope.tableValue.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                             }
                         });
                     $scope.tableParams.reload();
                 })

即在每个请求之前使表参数为空。

关于angularjs - ngTable.reload() 无法刷新 ng-table 第二次不显示新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31000330/

相关文章:

javascript - 过滤 ng-repeat 但保留初始长度/计数

javascript - Angular $resource 总是调用成功回调

javascript - Angular 复选框 “Select All” 功能不起作用

javascript - 简单来说,我们什么时候使用服务,什么时候使用angularjs中的指令?

javascript - 我在 AngularJS 中有两个具有相同 ng-controller 的 div,如何让它们共享信息?

javascript - Angular 嵌套指令

javascript - 如何在我的 angularjs 指令中切换 contenteditable 等属性的值?

javascript - 访问指令内子 div 的最佳方法?

angularjs - 将 JSON 数据注入(inject)/嵌入/$sanitize HTML 到 AngularJS 中

javascript - 如何在对象数组中使用 ng-repeat?