2017-05-29 149 views
0

我有一個父類EmberJS:從子類的init方法調用父類的功能

MyBaseClass = Ember.Object.extend({ 
    getData:function() { 
    return someData; 
    } 
}) 

和一個子類,當創建需要調用父類

MyChildClass = MyBaseClass.extend({ 
    sampleData:[], 
    init:function(){ 
    this._super(); 
    Ember.set(this, 'sampleData', this.getData()); 
    } 
}) 

我的問題的函數是,當我運行此代碼時,我得到「Uncaught TypeError:this.getData不是一個函數」。

任何想法爲什麼會發生這種情況?或者解決這個問題。

+1

你的是工作在[我玩弄](https://ember-twiddle.com/7d34759b6c2f96cb50a02b70c73e6c9e?openFiles=templates.application.hbs% 2C)這將是很好,如果你分享你在哪裏使用'MyChildClass'或任何非工作旋轉 – kumkanillam

+0

問題是,當我添加'this._super(...參數);',它打破縮小與錯誤「_Failed縮小輸入javascript源:此語言功能僅支持ECMASCRIPT6模式或更好:擴展表達式。使用--language_in = ECMASCRIPT6或ECMASCRIPT6_STRICT啓用ES6功能._「 – ashipj

+0

因此您是h在供應商文件夾中存儲此文件。我對嗎?。在沒有超級調用的情況下沒有問題,它應該工作..當我們擴展框架類像'Ember.Component'時,大多數超級調用是必要的。請參閱https://guides.emberjs.com/v2.13.0/object-model/classes-and-instances/#toc_initializing-instances。看看我的小問題,更新你的代碼以複製問題。它會幫助我們確定問題 – kumkanillam

回答

0

撰寫您init方法這種方法不使用ES6語法:

init: function() { 
    this._super.apply(this, arguments); 
    Ember.set(this, 'sampleData', this.getData());