2017-05-29 4 views
0

ich eine ElternklasseEmberJS: Aufruf Elternklasse Funktion von untergeordneten Klasse Init-Methode

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

und ein Kind Klasse haben, dass bei der Erstellung Bedürfnisse

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

Mein Problem eine Funktion in Elternklasse aufzurufen ist, wenn ich diesen Code ausführen, bekomme ich "Uncaught TypeError: this.getData ist keine Funktion".

Eine Idee, warum das passiert? Oder beheben Sie das.

+1

Ihr arbeitet in [mein twiddle] (https://ember-twiddle.com/7d34759b6c2f96cb50a02b70c73e6c9e?openFiles=templates.application.hbs% 2C) es wäre gut, wenn Sie teilen, wo Sie 'MyChildClass' verwenden oder ein nicht funktionierendes Twiddle – kumkanillam

+0

Problem ist, dass, wenn ich hinzufügen 'this._super (... Argumente);', bricht es die Verkleinerung mit Fehler "_Failed to Minimieren Sie die Eingabe-JavaScript-Quelle: Diese Sprachfunktion wird nur für den ECMASCRIPT6-Modus oder besser unterstützt: Spread-Ausdruck Verwenden Sie --language_in = ECMASCRIPT6 oder ECMASCRIPT6_STRICT, um ES6-Features zu aktivieren._ " – ashipj

+0

so sind Sie h Diese Datei im Lieferantenordner speichern. Habe ich recht?. kein Problem in diesem Fall ohne Super-Aufruf sollte es funktionieren..Meistens Super-Aufruf ist notwendig, wenn wir Framework-Klasse wie 'Ember.Component' erweitern. Siehe https://guides.emberjs.com/v2.13.0/object-model/classes-and-instances/#toc_initializing-instances. Sehen Sie sich meinen Twiddle Update an, in dem der Code das Problem reproduziert. Es wird uns helfen, das Problem zu identifizieren – kumkanillam

Antwort

0

Schreiben Sie init Verfahren auf diese Weise ohne Verwendung ES6 Syntax:

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