javascript - 更改 Sencha Touch Ext.ux.TouchCalendar 的 Javascript 对象数组结构

标签 javascript arrays object extjs sencha-touch

我正在构建一个 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/

相关文章:

javascript - 进入页面时未知的 JavaScript 脚本滚动

javascript - 向元素符号点添加新点

c++ - 动态数组删除旧指针并将其设置为新数组 C++

java - 在java中将字符数组转换为对象数组?是否可以?

javascript - 父 div 元素上的选定目标单击在移动 View 中不起作用,而在 webview 中起作用

javascript - beautifulsoup 与内部 javascript

javascript - 从数组中获取对象值 - NodeJs

arrays - 垂直循环二维数组并从每行中选择一个

javascript - 为什么按索引调用对象项会出现语法错误?

java - Java中的多项——可重用性和可维护性