2017-04-04 3 views
0

Je suis aux prises avec ce problème depuis quelques jours maintenant, essentiellement ce que j'essaye d'accomplir est d'ajouter un attribut personnalisé à chaque événement que je charge de la base de données. base de données. J'ai cherché pendant un bon moment et j'ai trouvé la fonction addAttr parmi d'autres fonctions. cette fonction fonctionne parfaitement lors de l'ajout et de l'enregistrement d'un nouvel événement, mais apparemment, cela ne fonctionne pas lorsque vous l'utilisez sur les événements que j'ai chargés depuis la base de données. Je l'ai essayé d'ajouter avant de créer le planificateur et après la création du planificateur (en utilisant GetEvents puis modifier ces données et en utilisant resetEvents pour les mettre à jour), mais que le travail na pas non plus ..AlloyUI Scheduler - ajouter un attribut personnalisé après le chargement à partir de la base de données

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 
     } 
    ); 
} 

Comme vous pouvez le voir J'ai essayé de déboguer les valeurs pour voir si cela fonctionne, et pour une raison quelconque, quand je consignerai l'id d'événement juste après les avoir mises à jour, il retournera le bon eventid, mais quand je le modifie, il retourne undefined.

Est-ce que quelqu'un sait ce que je fais mal ici?

Répondre

0

Pour cibler le ScheduleEvent nouvellement créé, vous devez stocker event.newSchedulerEvent dans la fonction de sauvegarde.

vous serez alors en mesure de:

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