2017-04-04 16 views
0

저는 이틀 동안이 문제에 어려움을 겪었습니다. 기본적으로 내가 수행하려고 시도하는 것은 내가로드하려는 각 이벤트에 사용자 정의 속성을 추가하는 것입니다. 데이터 베이스. 좋은 기능을 검색하고 다른 기능들 중에서 addAttr 기능을 발견했습니다. 이 함수는 새로운 이벤트를 추가하고 저장할 때 완벽하게 작동하지만 데이터베이스에서로드 한 이벤트에 사용할 때 분명히 작동하지 않습니다. 나는 당신이 볼 수 있듯이 ..AlloyUI 스케줄러 - 데이터베이스에서로드 한 후 사용자 정의 속성을 추가하십시오.

function Schedule(boundingbox, events) 
{ 
    var self = this; 
    this.schedule = null; 
    this.events = events || []; 
    this.boundingbox = boundingbox || ""; 

    console.log(self.events); 

    YUI({ lang: 'nl-NL' }).use(
     'aui-scheduler', 
     function (Y) { 
      var events = self.events; 

      var dayView = new Y.SchedulerDayView({ isoTime: true }); 
      var weekView = new Y.SchedulerWeekView({ isoTime: true }); 
      var monthView = new Y.SchedulerMonthView({ isoTime: true }); 

      var eventRecorder = new Y.SchedulerEventRecorder({ 
       on: { 
        save: function (event) { 
         var instant = this; 
         $.ajax({ 
          type: "POST", 
          url: "/EventHandler", 
          data: { "content": this.getContentNode().val(), "startDate": new Date(this.get('startDate')).getTime()/1000, "endDate": new Date(this.get('endDate')).getTime()/1000 }, 
          datatype: "json", 
          success: function (output) { 
           output = JSON.parse($.trim(output)); 
           instant.addAttr("eventid", { 
            value: output.data.EV_ID, 

            setter: function(val) { 
             return output.data.EV_ID; 
            }, 

            validator: function(val) { 
             return Y.Lang.isNumber(val); 
            } 
           }); 
          } 
         }); 
        }, 
        edit: function (event) { 
         var instance = this; 
         console.log(instance.getAttrs()); // returns a list of attributes, eventid is not among them 
         console.log(instance.get("eventid")); // returns undefined 
         self.schedule.getEvents()[0].get("eventid") // returns undefined 
        }, 
        delete: function(event) { 

        } 
       } 
      }); 

      self.schedule = new Y.Scheduler({ 
       strings: { agenda: 'Agenda', day: 'Dag', month: 'Maand', today: 'Vandaag', week: 'Week', year: 'Jaar', 'description-hint': "Een nieuwe afspraak" }, 
       activeView: weekView, 
       boundingBox: self.boundingbox, 
       date: new Date(), 
       eventRecorder: eventRecorder, 
       firstDayOfWeek: 1, 
       items: self.events, 
       render: true, 
       views: [dayView, weekView, monthView] 
      }); 


      $.each(self.schedule.getEvents(), function(key, value) { 
       value.addAttr("eventid", { 
        value: 123, 

        setter: function(val) { 
         return 123; 
        }, 

        validator: function(val) { 
         return Y.Lang.isNumber(val); 
        } 
       }); 
      }); 

      console.log(self.schedule.getEvents()); // returns an array of events 
      console.log(self.schedule.getEvents()[0].get("eventid")); // returns the eventid: 123 
     } 
    ); 
} 

스케줄러를 작성하기 전에 및 (getEvents를 사용하여 다음 그 데이터를 수정하고이를 업데이트 할 resetEvents 사용) 스케줄러를 작성하지만 didnt가 작업 중 후 추가하려고했습니다 나는 그것이 작동하는지 확인하기 위해 값을 디버깅하려고 시도했는데, 이벤트 ID를 업데이트 한 후에 바로 이벤트 ID를 반환 할 때 어떤 이유로 이벤트 ID를 반환하지만, 편집 중에는 정의되지 않은 값을 반환합니다.

아무도 내가 여기서 잘못하고있는 것을 알고 있습니까?

답변

0

새로 만든 ScheduleEvent을 타겟팅하려면 저장 기능에 event.newSchedulerEvent을 저장해야합니다.

은 그럼 당신은 수있을 것입니다 수에 :

newSchedulerEvent.set("eventid", output.data.EV_ID)