javascript - 后续调用 reloadData() 时, Angular 数据表有效负载格式不会更改

标签 javascript angularjs datatables

使用 Angular 数据表( Homepage )将数据初始加载到表中后,我打算更改重新加载和显示数据的时间跨度。使用两个日期时间输入字段选择跨度。但是,所有后续请求都不会修改 dtOptions 对象中的时间窗口参数。

奇怪的是,当我console.log修改后的dtOptions对象时,更改似乎生效了,即dtOptions的-data属性反射(reflect)了新的选定的时间范围。在 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); 时实际上反射(reflect)了我预先选择的时间范围。

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"

在调用 $scope.dtOptions.reloadData()< 之前,我尝试了多种方法来更新/重写有效负载中的 fromto:直接写入 $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();
};

关于javascript - 后续调用 reloadData() 时, Angular 数据表有效负载格式不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26258227/

相关文章:

javascript - 在我的 Angular 模板中使用 &lt;style scoped>

javascript - jQuery Datatables 分页设置

javascript - Jquery Datatables获取父列的绝对索引

javascript - 悬停时高效的 JS 事件监听器

Javascript ComboBox - 是否存在此特定功能的名称或示例?

javascript - 网络音频 API : Troubles appending JS audio object to <audio> html5 player in Firefox

jquery - 当 jquery 在 angular.js 之前加载时,如何使用 ngPaste 指令获取粘贴的值?

javascript - 刷新时,数组中新添加的元素将从数组列表本身中删除

javascript - 检查是否在 keydown 事件中选择了文本

jquery - 在客户端处理模式下使用 jQuery DataTables 对字母数字数据进行排序