2012-09-25 46 views
0

我對道場非常陌生,所以請耐心等待。我目前正在創建一個dojo日曆,事件來自數據庫。日曆默認爲網格(每月)視圖,並在加載時進行初始調用以獲取第一組事件。默認視圖打電話來獲得當前月份事件+/-一週。我在Observable中使用JsonRest對象來完成此操作。dojox.calendar和JsonRest - 如何更新?

這是目前正在工作沒有問題。我遇到問題的地方是拉動/更新其他月份的數據。預期的效果是讓用戶點擊向前或向後按鈕移動到下一個或上一個月。發生這種情況時,我想查詢數據庫以查看要顯示的新事件。我能夠返回新數據並將其記錄到控制檯,但我無法將其顯示在日曆上。我確信我錯過了一些(希望)簡單的東西,但我無法弄清楚,或找到任何好的文檔。這是我有:

require(['dojo/parser', 
     'dojo/ready', 
     'dojox/calendar/Calendar', 
     'dojo/store/Observable', 
     'dojo/store/JsonRest', 
     'dijit/registry'], 
    function(parser, ready, Calendar, Observable, JsonRest, registry) { 
    ready(function(){ 
     var MM = new Date().getMonth() + 1; 
     if (MM < 10) 
      { MM = '0' + MM}; 

     var YYYY = new Date().getFullYear(); 
     var monthStore = new Observable(JsonRest({target: '/levelx/teamSchedule/getMonthInfo/'})); 
     calendar = new Calendar({ 
      store: monthStore, 
      dateInterval: 'month', 
      style: styleText, 
      editable: false, 
      cssClassFunc: function(e){ 
      return e.calendar; 
      }, 
      query: '?q=' + YYYY + '-' + MM 
     }, 'calendar'); 

    calendar.on("timeIntervalChange",function(e){ 
     var YYYY = e.startTime.getFullYear(); 
     var MM = e.startTime.getMonth() + 1; 
     if (MM < 10) 
     { MM = '0' + MM}; 
     monthStore.query('?q=' + YYYY + '-' + MM).then(function(results){ 
     console.log(results); 
     }); 
    }); 

我覺得我如此親密。就像我說的,我有正確的數據返回到控制檯(console.log(results)),但不知道如何讓它顯示在實際的日曆中。

回答

2

我能夠通過以下修改完成我所需的工作。只要用戶更改顯示的日期範圍,它就會自動運行查詢來收集並顯示適當的事件。

require(['dojo/parser', 
     'dojo/ready', 
     'dojox/calendar/Calendar', 
     'dojo/store/JsonRest', 
     'dijit/registry', 
     'dojo/dom', 
     'dojo/html'], 
    function(parser, ready, Calendar, JsonRest, registry, dom, html) { 
    ready(function(){ 
     var MM = new Date().getMonth() + 1; 
     if (MM < 10) 
      { MM = '0' + MM}; 
     var YYYY = new Date().getFullYear(); 
     var detailStore = JsonRest({target: '/levelx/teamSchedule/getDayInfo/'}); 
     var monthStore = JsonRest({target: '/levelx/teamSchedule/getMonthInfo/'}); 

     calendar = new Calendar({ 
      dateInterval: 'month', 
      style: styleText, 
      editable: false, 
      cssClassFunc: function(e){ 
      return e.calendar; 
      } 
     }, 'calendar'); 

     calendar.on("timeIntervalChange",function(e){ 
      var YYYY = e.startTime.getFullYear(); 
      var MM = e.startTime.getMonth() + 1; 
      if (MM < 10) 
      { MM = '0' + MM}; 

      calendar.set('query','?q=' + YYYY + '-' + MM); 
      calendar.set('store', monthStore); 
     }); 
    }); 
}); 
0

嘗試更改間隔更改功能,以便通過日曆對象設置查詢,而不是直接將其設置到商店。

calendar.on("timeIntervalChange",function(e){ 
    var YYYY = e.startTime.getFullYear(); 
    var MM = e.startTime.getMonth() + 1; 
    if (MM < 10) 
    { MM = '0' + MM}; 

// this 
    this.query('?q=' + YYYY + '-' + MM).then(function(results){ 
    console.log(results); 
    }); 
}); 

從未使用過日曆,只是還沒有,所以它是一種猜測TBH。但是它看起來像有一個在日曆屬性被設置初始query,這一點應在dojo.store.api反映。日曆本身很可能沒有正確觀察,然後在新數據到達時不會呈現。

+0

剛纔試了,它不喜歡它:「遺漏的類型錯誤:對象的特性‘查詢’[控件dojox.calendar.Calendar,日曆]是不是一個函數」。 – Tony

+0

答案是關閉的,我害怕..但從什麼是閱讀它的棘手讓jsonrest商店工作。試試看看irc.freenode.net上的#dojo – mschr