ngTable自定义刷新操作?

时间:2014-05-16 17:14:59

标签: javascript angularjs angularjs-scope angularjs-service ngtable

我有一张表显示来自远程服务器的数据。有一个数字输入,当数字改变时我希望刷新表格(在arg中输入数字)。

这是我目前的尝试:

$scope.$watch("number", function () {
    console.log("number changed");
    $scope.user_table_columns.length = 0;
    $scope.user_table_columns = [
        { title: 'Loading... (give it 20-25 seconds)', visible: true}
    ];
    if (typeof $scope.stats != "undefined")
        $scope.stats.length = 0;
    $scope.stats = [];
    //$scope.tableParams.reload();
    $http.get("/api/thing/"+$scope.number).then(function (result) {
        $scope.table_data = result.data;
        $scope.user_table_columns.length = 0;
        Object.keys($scope.stats[0]).forEach(function (col) {
            $scope.user_table_columns.push({ title: col, field: col, visible: true })
        });
    })
});

我在日志中得到number changed;但没有新的HTTP请求。

2 个答案:

答案 0 :(得分:0)

像@cjmling所说,尝试添加更多日志。我还编辑了您发布的代码,以使用一些最佳实践:

$scope.$watch("number", function (newValue, oldValue) {
  $log.info("number changed");

  $scope.user_table_columns = [
    { title: 'Loading... (give it 20-25 seconds)', visible: true }
  ];

  $scope.stats = [];

  $http.get("/api/thing/" + $scope.number).
  success(function (data, status, headers, config) { 
    $scope.table_data = data;

    var keys = Object.keys($scope.stats[0]);
    angular.forEach(keys, function (col) {
      $scope.user_table_columns.push({ title: col, field: col, visible: true });
    });
  }).
  error(function (data, status, headers, config) {
    // An error occured, do something..
    $log.error('HTTP GET failed! Status code: ' + status);
  });    
});

角度为常规操作提供了一些实用功能。以下是角度提供的utils列表:Angular Functions。另外需要注意的是,您通常希望回避!===,因为在检查条件时这些会导致类型强制结果。虽然!===占有一席之地,但假设您应该使用!=====几乎总是安全的。在条件块周围放置引号通常也是最佳做法,即使它是一行。这只是帮助人们更容易阅读。您也不需要设置length变量的user_table_columns属性,当您更改它引用的数组时,这会更新。

我添加了$log角度服务的使用。这是一个很好的做法,它提供了一些很好的实用程序来记录信息。 $log

最后,我稍微改变了对$http服务的使用。在发出请求时定义successerror函数通常很有帮助。使用.then可以正常工作,但它并不能让您深入了解请求返回时发生的情况。猜测你的请求发生了什么,定义错误处理程序可能会给你一些信息。尝试调试问题时,更多信息会更好。

我知道这并没有直接回答你的问题,但鉴于你发布的信息,除了指出你正确的方向解决你自己的问题之外,很难做更多的事情。由于它正在注销"number changed",这使我猜你的AJAX请求失败了。记录成功和错误回调的输出,并查看请求返回时发生的情况。希望这有点帮助。

答案 1 :(得分:0)

凌晨3点发表此问题;原来这个问题是一个错误的#34;一些描述...

(将我用来缓存的游标对象分配给我正在缓存的变量,然后在该路由上返回)