在使用angular-datatables(Homepage)将数据初始加载到表中之后,我打算更改重新加载和显示数据的时间范围。使用两个日期时间输入字段选择范围。但是,所有后续请求都不会修改dtOptions
对象中的时间窗口参数。
奇怪的是,当我console.log修改后的dtOptions
对象时,更改似乎生效,即-dtOptions
的data属性反映了新选择的时间范围。在Chrome的“开发人员工具”的“网络”标签中检查请求后,表明仍使用了旧的时间范围值,这不会导致表条目的更新。
例:
每当我发布新数据时,这就是在“开发人员工具”的“网络”标签中获得的{from, to}
值:
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
Form Dataview sourceview URL encoded
->from:1412172055200
->to:1412690455222
虽然在“控制台”选项卡中等效,但是发出
console.log($scope.dtOptions);
时实际上反映了我预先选择的时间范围。Object {ajax: Object, reload: true, integrateBootstrap: false, hasColVis: false, hasColReorder: false…}
ajax: Object
data: Object
->from: 1412518000453
->to: 1412690800493
__proto__: Object
datatype: "json"
type: "POST"
在调用
from
之前,我尝试了多种方法来更新/重写有效负载中的to
和$scope.dtOptions.reloadData()
值:直接写入$scope.dtOptions.ajax.from
,尝试传递更新的payload
对象,以及最新尝试(下面的代码给出一个想法)-使用newOptions()
重新创建dtOptions
对象。var payload = {
from: tFrom,
to: tTo
};
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withOption('ajax', {
url: constantCfg.apiEndpoint+constantCfg.uri.usersStats,
type: 'POST',
data: payload
});
$scope.dtOptions.reloadData();
console.log($scope.dtOptions); <- causes 'Console' tab output discussed above
在“控制台”选项卡中打印时,所有方法都会更新有效负载的值,但在“网络”选项卡中的请求仍指示旧时间范围值的使用。
我尝试更新
payload
对象的方法均未引起任何其他警告或错误。 最佳答案
实际上,您需要将ajax.data
定义为一个函数,并定义要发送到服务器的参数。
var from = 1412518000453,
to = 1412690800493;
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withOption('ajax', {
url: constantCfg.apiEndpoint+constantCfg.uri.usersStats,
type: 'GET',
data: function(d) {
d.from= from;
d.to = to;
}
});
$scope.reloadData = function() {
// Compute your from/to variables
from = 1412518000463;
to = 1412690800593;
$scope.dtOptions.reloadData();
};