2015-10-21 4 views
11

Ich möchte ES6 Klassen in Angular-Anwendung verwenden und zu versuchen, es wie folgt zu verwenden:Fehler, wenn ES6 Klassen mit Winkel Dienste/Controllern

'use strict'; 

class EditorCtrl{ 
    constructor(){ 
     this.something = "ASd"; 
    } 
    foo(){ 

    } 
} 
angular.module('Editor').controller('EditorCtrl', EditorCtrl); 

aber aus irgendeinem Grund dieser Code geben Sie mir einen Fehler: Class constructors cannot be invoked without 'new'. Warum passiert das und wie kann ich das beheben?

Eckig: 1.4.7 Chrome: 46.0.2490.71

+0

Was genau nicht klar über den Fehler ist? Dies könnte helfen: http://stackoverflow.com/a/29641308/218196 –

+2

Es ist unklar, warum dieser Fehler angezeigt wird und wie es zu beheben ist. Mein Beispiel ist dasselbe wie in der von Ihnen verknüpften Lösung. – SET

+1

kann auf dieses Problem bezogen werden https://github.com/angular/angular.js/issues/12597 – SET

Antwort

1
'use strict'; 

class EditorCtrl{ 
    constructor($scope){ 
     this.something = "ASd"; 
    } 
    foo(){ 

    } 
} 
// Use this instead. 
angular.module('Editor').controller('EditorCtrl', ['$scope', function($scope) { 
    return new EditorCtrl($scope); 
}]); 

Da die Fehler informiert müssen 'neue' zurückzukehren. Auf diese Weise wird die Injektion auch funktionieren. Prost.

+2

Dies ist überhaupt nicht die empfohlene Methode, um mit Dingen zu arbeiten (nicht direkt $ 'scope' zuzuweisen), noch die dokumentierte Methode (Controller sollten Klassen sein können, da sie neu definiert sind) –

0

Dies scheint zu funktionieren:

angular 
    .module('Editor') 
    .controller('EditorCtrl',() => new EditorCtrl())