0

我有这个日历的数据

var codropsEvents = {
"09-10-2013" : "Event Name 1",
"09-11-2013" : "Event Name 2"
                    };

从数据中,它是一个对象数组。我想让它变得动态,所以我做了这样的事情

var codropsEvents = [];
codropsEvents.push({"09-10-2013" : "Event Name 1"});

但它没有显示日历上的事件。我是在以错误的方式初始化对象数组还是在错误地推送数据。

日历在这里 http://tympanus.net/codrops/2012/11/27/calendario-a-flexible-calendar-plugin/comment-page-4/

4

3 回答 3

1

阅读 javascript 中的数组和对象。

//Object, { Key : value }
var codropsEventsObject = {
 "09-10-2013" : "Event Name 1",
 "09-11-2013" : "Event Name 2"
};
//Array , Also, array of objects
var codropsEventsArr = [ 
 {"09-10-2013" : "Event Name 1"},
 {"09-11-2013" : "Event Name 2"}
];

向对象添加新元素的不同方法

codropsEventsObject.newEle = "newValue"  
codropsEventsObject["newEle"] = "newValue"
codropsEventsObject[newEle] = "newValue"    // newEle is a js variable

向数组添加新元素的不同方法

codropsEventsArr.push( {newEle , "newValue"})  // newEle is a js variable
codropsEventsArr.push( {"newEle" , "newValue"})

希望能帮助到你

于 2013-09-22T12:41:14.820 回答
1

日历接受对象文字,而不是数组。请参阅http://tympanus.net/Development/Calendario/js/data.js

你说(见下面的评论):

for (var x = 0; x < msg.length; x++) { 
  date = msg[x].date; event_name = msg[x].event;
}

反而:

var codropsEvents = {};
for (var x = 0; x < msg.length; x++) { 
  codropsEvents[msg[x].date] = msg[x].event;
}

然后,您就有了一个准备好绑定到您的日历的对象文字。

http://jsfiddle.net/XmgXG/

于 2013-09-22T12:45:55.003 回答
0

你的问题有些不太清楚。

根据您的代码顶部,变量 codropsEvents 似乎是一个包含名称/值对的对象。

当您的推送操作将新对象推送到数组时,不会向对象添加新值。

  • 那么你想在这里实现什么?
  • 你想要一个对象数组吗?
  • 想要一个具有多个值的对象吗?

为了保持动态,您必须更改代码以支持对象数组。

或者您可以执行以下操作并使用具有多个值的一个对象

var codropsEvents = [];
codropsEvents["09-10-2013"] = "Event Name 1";
codropsEvents["09-10-2013"] = "Event Name 2";
于 2013-09-22T12:42:39.230 回答