2013-05-28 42 views
0

在這種jsfiddle,所述didInsertElement鉤內部時,我試圖調用稱爲eventJSON的控制器的方法,其在CalendarsController定義,我我在一個名爲calendarJSON的變量中存儲或傳遞該調用的控制器動作我在CalendarsView的didInsertElement鉤子中聲明。但是當我記錄結果時,它會給出未定義的結果。另外,如果我在didInsertElement鉤子內部放置一個調試器並檢查控制檯中的變量,它將返回undefined。Emberjs1.0.0-RC3:未定義主叫和存儲控制器的方法鑑於可變

我想存儲從返回的數據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 
    }); 
    } 
}); 

回答

0

我修改了什麼是粘貼下面讓它運行。基本上,我沒有使用關鍵字return從控制器返回任何東西。其次,我將步驟分成兩步來訪問控制器操作。在步驟1,I取控制器,然後我調用其事件,如下所示:

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

working 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 
    }); 
    } 
}); 
+0

感謝編輯。 – brg

相關問題