0

我有一个表格显示来自远程服务器的数据。有一个数字输入,当数字更改时,我希望刷新表格(在 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 请求。

4

2 回答 2

0

凌晨 3 点发布了这个问题;原来这个问题是某种描述的“错字”……</p>

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

于 2014-05-17T06:19:15.237 回答
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);
  });    
});

Angular 提供了一些实用功能,用于常见操作。以下是 Angular 提供的实用工具列表:Angular Functions。需要注意的另一件事是,您通常要回避,!=因为==在检查条件时可能会导致类型强制结果。虽然!=and==有一个地方,但假设您应该使用!==and几乎总是安全的===。通常最好的做法是在条件块周围加上引号,即使它是一行。这只是帮助人们更轻松地阅读它。您也不需要设置变量的length属性,user_table_columns当您更改它引用的数组时,它会更新。

我添加了$log角度服务的使用。使用它是一个很好的做法,它提供了一些很好的工具来注销信息。$日志

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

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

于 2014-05-16T22:49:50.433 回答