我有一张表显示来自远程服务器的数据。有一个数字输入,当数字改变时我希望刷新表格(在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请求。
答案 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
服务的使用。在发出请求时定义success
和error
函数通常很有帮助。使用.then
可以正常工作,但它并不能让您深入了解请求返回时发生的情况。猜测你的请求发生了什么,定义错误处理程序可能会给你一些信息。尝试调试问题时,更多信息会更好。
我知道这并没有直接回答你的问题,但鉴于你发布的信息,除了指出你正确的方向解决你自己的问题之外,很难做更多的事情。由于它正在注销"number changed"
,这使我猜你的AJAX请求失败了。记录成功和错误回调的输出,并查看请求返回时发生的情况。希望这有点帮助。
答案 1 :(得分:0)
凌晨3点发表此问题;原来这个问题是一个错误的#34;一些描述...
(将我用来缓存的游标对象分配给我正在缓存的变量,然后在该路由上返回)