gpt4 book ai didi

javascript - 数据表对象在函数内部不可用

转载 作者:行者123 更新时间:2023-11-28 00:48:53 24 4
gpt4 key购买 nike

我正在使用 jQuery 和 Datatables plugin绘制表格。我使用的数据来自 Dropbox Datastore API。我认为这个问题更多的是关于 JavaScript 变量范围,而不是关于 Datatables 或 Dropbox,所以希望有人能提供帮助。

这是我的代码。注释描述了每个步骤。

$(function(){

//Authenticate dropbox
client.authenticate({interactive: false}, function(error) {
// Get aircraft data from dropbox
var aircraftData = [];

function getAircraftData(){
aircraftData.push(...);
}
getAircraftData();

//Initialize Aircraft table
var aircraftTable = $('#aircraft-table').DataTable({
data:aircraftData,
...
});
console.log(aircraftTable); //This yields a generic [object Object]

//Incoming data changes from Dropbox listener
datastore.recordsChanged.addListener(function (event) {
//Update aircraftData[]
getAircraftData();

//Refresh the datatable
aircraftTable.draw(); // -!- ERROR: undefined is not a function -!-
console.log(aircraftTable); //This also yields a generic [object Object]
});
});
});

我猜测 aircraftTable 不可用,因为它在 Dropbox 监听器函数内时超出了范围。如何将其纳入范围以使其可用?

更新

我调整了代码以显示一些额外的上下文。所有这一切都发生在另一个 Dropbox 功能中。通常,当您将 DataTable 对象记录到控制台时,它看起来像这样:

[context: Array[1], selector: Object, tables: function, table: function, draw: function…]

该表工作正常,但以某种方式引用它不起作用。

最佳答案

好吧,我终于明白了。

首先,当我将内容记录到控制台时,我在对象前面添加了某种描述,如下所示:

console.log('Aircraft table: '+aircraftTable); 

...记录了[object Object]。但如果您想查看一个对象及其属性,则无法将其与字符串连接。你必须这样做:

console.log(aircraftTable);

事实证明,aircraftTable 实际上是可用的,但我在上面使用了错误的方法。以下是获取新数据并重绘表格的正确方法:

//Refresh table                
var aircraftData = getAircraftData();
aircraftTable.clear().rows.add(aircraftData).draw();

以下是rows.add()的文档:http://datatables.net/reference/api/rows.add()

真是一种解脱。 :)

关于javascript - 数据表对象在函数内部不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27027684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com