我正在构建一个 Sencha Touch 应用程序,它利用了很棒的日历插件 https://github.com/SwarmOnline/Ext.ux.TouchCalendar但是,为了利用事件功能,需要一些自定义实现。
我已经将事件模板绑定(bind)到一个存储,该存储从服务器获取数据。它按计划工作,但问题是该插件查找商店中的所有记录并将每一条记录视为一个事件(因为在事件模型中,它查找“日期”作为起点和终点)。所以每天看起来都有一个事件,即使那些没有“项目”的都是空白的,请参阅:http://cl.ly/image/3j461O2L2Y1k 。我只想显示带有“items”的事件
我从服务器返回的数据以以下格式返回(很多天没有“项目”):
[
{
"day":28,
"iscurrentmonth":false,
"issunday":false,
"date":"2013-05-28",
"items":[
{
"id":134513,
"title":"Subject",
"typeid":3,
"typename":"Essay",
"author":"Bryan Fisher",
"classname":"English 9A",
"classid":344499,
"courseid":60555
},
{
"id":134485,
"title":"Subject",
"typeid":3,
"typename":"Essay",
"author":"Bryan Fisher",
"classname":"English 10",
"classid":344500,
"courseid":60555
}
]
}
]
因此,我必须将数据数组的结构更改为以下格式:
[
{
"date":"2013-05-28",
"id":134513,
"title":"Subject",
"typeid":3,
"typename":"Essay",
"author":"Bryan Fisher",
"classname":"English 9A",
"classid":344499
},
{
"date":"2013-05-28",
"id":134485,
"title":"Subject",
"typeid":3,
"typename":"Essay",
"author":"Bryan Fisher",
"classname":"English 10",
"classid":344500
}
]
如何更改原始对象以匹配新格式? (获取“日期”并将其插入“项目”节点)?
我对像 underscore.js 这样的东西完全开放
提前致谢
最佳答案
也许我想太多了......
有点黑客......
在 TouchCalendarEvents.js 中,我添加了以下方法来检查空事件 div
hideOthers: function(){
var bar = $('.event-bar');
for (var i = 0; i < bar.length; i++){
var allBars = bar[i];
if (allBars.innerHTML == ''){
console.log('number ' + i + 'is Empty!' );
allBars.remove();
}
}
},
并在refreshEvents中调用它
refreshEvents: function(){
// scroll the parent calendar to the top so we're calculating positions from the base line.
if(this.calendar.getScrollable()){
this.calendar.getScrollable().getScroller().scrollTo(0,0);
}
this.removeEvents();
this.getViewModeProcessor().generateEventBars(); // in turn calls this.renderEventBars(this.eventBarStore);
this.createEventWrapper();
this.hideOthers();
if (this.getAllowEventDragAndDrop()) {
this.createDroppableRegion();
}
},
目前效果还不错!
关于javascript - 更改 Sencha Touch Ext.ux.TouchCalendar 的 Javascript 对象数组结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952008/