2017-05-29 120 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());