Javascript AngularJS';s ng表格重新加载不工作

Javascript AngularJS';s ng表格重新加载不工作,javascript,angularjs,ngtable,Javascript,Angularjs,Ngtable,我一直在谷歌上搜索,没有一个解决方案对我有效。我有一个AngularJS页面,它只包含一小部分数据,没有分页或任何东西,我只想能够删除一个条目并更新表。但是,我对$scope.tableParams.reload()的调用没有任何作用。 这是我的控制器: app.controller('viewVersion', ['$scope', '$filter', '$RestService', 'NgTableParams', '$cookies', '$routeParams', '$q', 'Fl

我一直在谷歌上搜索,没有一个解决方案对我有效。我有一个AngularJS页面,它只包含一小部分数据,没有分页或任何东西,我只想能够删除一个条目并更新表。但是,我对$scope.tableParams.reload()的调用没有任何作用。 这是我的控制器:

app.controller('viewVersion', ['$scope', '$filter', '$RestService', 'NgTableParams', '$cookies', '$routeParams', '$q', 'Flash', '$location', function($scope, $RestService, NgTableParams, $cookies, $routeParams, $q, Flash, $location) {
    $scope.version = {id:null, version:null, comment:null, states:[]};
    $scope.permissions=$cookies.get('permissions');
    var promise = $RestService.StateList(); //Get the list of states to use to map state ids to their names (BOI, REQ, etc).
    promise.success(function(data) {
      $scope.stateList = data;
    });

    promise.then(function(){
        var inprom = $RestService.GetVer($routeParams.verid); //Get the version from the API given the version id.
        inprom.success(function(data){
          data.forEach(function(ver) {
            $scope.version['id'] = ver.id;
            $scope.version['version'] =ver.version;
            $scope.version['platform'] =ver.platform;
            $scope.version['comment'] = ver.comment;
            if (ver.state!=null) {
              var state_info = _.where($scope.stateList, {state_id:ver.state})[0];
              $scope.version.states.push({state:state_info.state_name, state_id:ver.state, launch:ver.launch});
            }
          });
        })
        inprom.error(function(errorData) {
          $cookies.set('flash_message', "Error getting version with ID "+$routeParams.verid);
        });
        inprom.then(function() {
          $scope.tableParams = new NgTableParams({
            sorting: { launch: "desc" }
          }, {
            counts:[],
            total: $scope.version.states.length,
            filterDelay: 0,
            dataset: angular.copy($scope.version.states)
          });
        });
    });

    $scope.delete = function(row) {
        _.remove($scope.tableParams.settings().dataset, function(item) {
          return row.state_id === item.state_id;
        });
        $scope.tableParams.total($scope.tableParams.settings().dataset.length);
        $scope.tableParams.reload();
    };
}]);
以及匹配的html:

<table ng-table="tableParams" class="table table-bordered table-hover table-condensed editable-table" ng-form="tableForm">
    <tr ng-repeat="state in version.states" ng-form="stateForm">
      <td title="'State'" sortable="'state'">{{state.state}}</td>
      <td title="'Launch Date'" sortable="'launch'" ng-switch="state.isEditing" ng-form="launch">
        <span ng-switch-default class="editable-text">{{state.launch | date:'medium':'UTC'}}</span>
        <div class="controls" ng-class="stateForm.$invalid ? 'has-error' : ''" ng-switch-when="true">
          <input type="text" name="name" ng-model="state.launch" class="editable-input form-control input-sm" required />
          <p ng-show="stateForm.$invalid && !stateForm.$pristine" class="help-block">Enter a valid date and time.</p>
        </div>
      </td>
      <td>
        <button class="btn btn-primary btn-sm" ng-show="permissions.indexOf('admin') > -1" ng-click="save(state, stateForm)" ng-if="state.isEditing" ng-disabled="stateForm.$pristine || stateForm.$invalid"><span class="glyphicon glyphicon-ok"></span></button>
        <button class="btn btn-default btn-sm" ng-show="permissions.indexOf('admin') > -1" ng-click="cancel(state, stateForm)" ng-if="state.isEditing"><span class="glyphicon glyphicon-remove"></span></button>
        <button class="btn btn-default btn-sm" ng-show="permissions.indexOf('admin') > -1" ng-click="state.isEditing = true" ng-if="!state.isEditing"><span class="glyphicon glyphicon-pencil"></span></button>
        <button class="btn btn-danger btn-sm" ng-show="permissions.indexOf('admin') > -1" ng-click="delete(state)" ng-if="!state.isEditing"><span class="glyphicon glyphicon-trash"></span></button>
      </td>
    </tr>
  </table>

{{state.state}
{{state.launch}日期:'medium':'UTC'}
输入有效的日期和时间


任何帮助都将不胜感激。谢谢

您的行直接来自您的数据,

…但删除函数正在从ng表的数据副本中删除行:

$scope.delete = function(row) {
    _.remove($scope.tableParams.settings().dataset, function(item) {
      return row.state_id === item.state_id;
    });
    $scope.tableParams.total($scope.tableParams.settings().dataset.length);
    $scope.tableParams.reload();
};
您想从ng表的副本中提取行:


这是一个简化的演示:

感谢您的回复!你说得很对,我就是这么做的。我已将ng repeat更新为“state in$data”,但它仍然不起作用:(看看你是否能在一个简单的Plunk中重现这个错误。如果你发布了一个,我会再看一看。我只是把它弄得乱七八糟,好像永远把它剥光,然后慢慢地把东西加回去。谢天谢地,我已经让它工作了,尽管我不能告诉你我的生活中到底是什么让它不工作了第一位:(非常感谢您的帮助!我接受您的回答,因为使用范围状态而不是表状态是一个大问题。