2013-06-06 64 views
1

我建立一個煎茶觸摸應用程序,利用真棒日曆插件https://github.com/SwarmOnline/Ext.ux.TouchCalendar,然而,一些自定義實現需要以利用該事件的功能。更改對象結構在JavaScript中數組煎茶觸摸Ext.ux.TouchCalendar

我已經追平了事件模板商店,從服務器獲取數據。它按計劃運行,但問題是插件在商店中查找所有記錄並將每個記錄計爲一個事件(因爲在事件模型中,它會查找「date」作爲開始和結束點)。因此,每天看起來都有一個事件,即使沒有「項目」的項目是空白的,請參閱: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提前

回答

1

也許我在想這件事

謝謝...

一個黑客有點...

in 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(); 
    } 
}, 

作品不夠好,現在!