我正在构建一个使用了很棒的日历插件https://github.com/SwarmOnline/Ext.ux.TouchCalendar的Sencha Touch应用程序,但是,为了利用事件功能,需要一些自定义实现。
我已经将事件模板绑定到商店,该商店从服务器获取数据。它按计划工作,但问题是插件在商店中查找所有记录并将每个记录计为一个事件(因为在事件模型中,它查找“日期”作为起点和终点)。因此,每天看起来都有一个事件,即使那些没有“项目”的事件是空白的,请参阅:http://cl.ly/image/3j461O2L2Y1k。我只想用“项目”显示事件
来自服务器的我的数据以下列格式返回(很多天没有“项目”):
[
{
"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
这样的事情提前致谢
答案 0 :(得分:1)
也许我过度思考这一切......
有点黑客......
在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();
}
},
现在工作得很好!