Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error when using ES6 classes with angular services/controllers

I want to use ES6 classes in Angular application and trying to use it like this:

'use strict';

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

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

but for some reason this code give me an error: Class constructors cannot be invoked without 'new'. Why is this happens and how I can fix this?

Angular: 1.4.7 Chrome: 46.0.2490.71

like image 664
SET Avatar asked Oct 21 '15 22:10

SET


1 Answers

'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);
}]);

As the error informs must return 'new'. This way injection will also work. Cheers.

like image 97
pcdoneright.com Avatar answered Oct 13 '22 16:10

pcdoneright.com