我想在ajax调用中维护datatable对象。请参考以下代码
$(function(){
function applyDataTables(options) {
//datatable object
var $datatable = $("#table1").dataTable(options);
if (some condition) {
this.dataTableObj = [];
this.dataTableObj.push($datatable);
} else {
$datatable = dataTableObj[0];
}
...............................................
}
})();
第一次加载页面时,它会调用这个函数并找到一些数据表对象,然后它会发出一些ajax帖子,那时它也会触发相同的函数并找到数据表对象。
所以,我想在第一次加载页面时维护$ datatable对象,在一些ajax帖子中我想将这个相同的对象用于其他目的,我如何在ajax帖子中维护$ datatable对象。
如果我将该对象添加到“this.dataTableObj”,我可以在ajax post中获取旧对象的值。这是否是在javascript中维护现有对象的正确方法。
谢谢,
答案 0 :(得分:0)
嗯“this”总是指调用对象。 但如果你打电话
applyDataTables(options) //this will be window object;
可以使用call,apply或bind方法覆盖它
applyDataTables.call(someObj,options) //this will point to someObj
在你的功能中,这可能令人困惑。 另外,如果您将其传递给某些回调,则可以通过调用或应用方法覆盖它。
因此,不是将datatableObj存储在此,而是将其存储在某个全局命名空间上,其范围将在所有ajax调用上。
您可以定义
var globV={
dataTableObj:[]
};
//您也可以使用不同的命名空间而不是globV
$(function(){
function applyDataTables(options) {
//datatable object
var $datatable = $("#table1").dataTable(options);
if (some condition) {
globV.dataTableObj = [];
globV.dataTableObj.push($datatable);
} else {
$datatable = globV.dataTableObj[0];
}
...............................................
}
})();