我目前正在使用这个JS Lib https://github.com/v-v-vishnevskiy/timeslider并创建一些不同的时间表图表。
我想插入" init_cells"的信息。以通用的方式让我不必关心有多少个对象(我希望这个术语是正确的)在数组中。
参考演示,有一个示例代码:
$('#slider123').TimeSlider({
start_timestamp: current_time - 3600 * 12 * 1000,
init_cells: [
{
'_id': 'c1',
'start': (current_time - (3600 * 5.4 * 1000) + 1234),
'stop': current_time - 3600 * 3.2 * 1000,
'style': {
'background-color': '#76C4FF'
}
},
{
'_id': 'c2',
'start': (current_time - (3600 * 2.1 * 1000))
}
]
});
这就像是两个对象的JSON数组一样?!
我在此期间试图将每个对象存储在一个集中的数组中。
var str1 = [{
'_id':'c1','start':tV1Start,'stop':tV1End,'style':{'background-color':'#76C4FF'}}];
var str2 = [{
'_id':'c2','start':tV1Start2,'stop':tV1End2,'style':{'background-color':'#76C4FF'}}];
var arr = [];
arr.push(str1);
arr.push(str2);
但是如何在数组中提取所有存储的信息" arr"在init_cells的jQuery函数里面?
此剪辑不起作用
init_cells:arr
但这有效:
init_cells:arr[0]
但是如何通过将变量arr传递给jQuery函数来创建完整的时间轴,而不必关心数组arr中有多少元素?
答案 0 :(得分:0)
那是因为在你的"集中式阵列中#34;你实际上是存储一个对象数组 - 你实际上需要一个对象数组,而不需要额外的嵌套。 arr
是一个数组,而不是连接str1
和str2
,而是将它们推入arr
。
因此,您的代码将生成一个无法识别的错误结构:
arr
)
str1
)
str2
)
要解决此问题,请使用.concat()
代替.push()
:
var arr = [].concat(str1).concat(str2);
然后,这将生成以下结构,这是您需要的:
arr
)
答案 1 :(得分:0)
每个单独的对象都有一个额外的包装数组
从每个中删除外部[]
:
var str1 = {'_id':'c1','start':tV1Start,'stop':tV1End,'style':{'background-color':'#76C4FF'}};
如果您将所有这些存储在数据库中并从数据库返回完整数组,那么您需要做的就是:
$.getJSON('/path/to/data', function(responseData){
$('#slider123').TimeSlider({
start_timestamp: current_time - 3600 * 12 * 1000,
init_cells: responseData // pass response data array directly as property value
});
});