0

在这个jsfiddle中,在didInsertElement 钩子中,我试图调用一个名为eventJSON的控制器方法,该方法在 CalendarsController 中定义,我将该调用存储或传递给我在 didInsertElement 钩子中声明的名为calendarJSON的变量中的控制器操作日历视图。但是当我记录结果时,它给出了未定义的。此外,如果我在 didInsertElement 挂钩中放置一个调试器并在控制台中检查变量,它会返回未定义。

我想存储从var calendarJSON = this.get('controller').send('eventJSON');返回的数据 在变量中,因为我想随后将该数据传递给 fullcalendar jquery。

jsfiddle _

控制器:

 App.CalendarsController = Em.ArrayController.extend({
    eventJSON: function() {
     //returns the json of controller's content
      this.invoke('toJSON');
      return this.get('content');
    }
 });

风景:

 App.CalendarsView = Ember.View.extend({
   templateName: 'calendars',
   attributeBindings: ['id'],
   id: "mycalendar",

   didInsertElement: function() {
    debugger;
    this._super();

    //Right here is the problem
    var calendarJSON = this.get('controller').send('eventJSON');
    console.log(calendarJSON);

    this.$().fullCalendar({
       header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        editable: true,

        events: calendarJSON 
    });   
  }
});
4

1 回答 1

0

我修改了下面粘贴的内容以使其运行。基本上,我没有使用关键字return从控制器返回任何内容。其次,我将访问控制器操作的步骤分为两个步骤。在第 1 步中,我获取控制器,然后在其上调用事件,如下所示:

 var controller = this.get('controller');
 var calendarJSON = controller.eventJSON();

工作的jsfiddle

调整后的代码:

App.CalendarsController = Em.ArrayController.extend({
  eventJSON: function() {
    m = this.get('content');
    m.invoke('toJSON');
    console.log(m);
    return m;
 }
}); 

风景:

App.CalendarsView = Ember.View.extend({
 templateName: 'calendars',
 attributeBindings: ['id'],
 id: "mycalendar",

 didInsertElement: function() {
    this._super();

   var controller = this.get('controller');
   var calendarJSON = controller.eventJSON();

   console.log(calendarJSON);

   this.$().fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },

        editable: true,
        events: calendarJSON 
    });  
   }
});
于 2013-05-28T18:23:28.083 回答