Javascript 更面向对象的Angular 1.5+;成分

Javascript 更面向对象的Angular 1.5+;成分,javascript,angularjs,Javascript,Angularjs,我现在不能使用Angular 2,但我喜欢它更面向对象的方式(组件是类)。我们开始使用Angular 1.5+组件,为了最终简化转换,我正在考虑使用类的新javascript功能来创建Angular 1.5+组件类。部分原因是为了看看我能想出什么 我的具体问题是,当我通过将$onInit设置为类函数来定义$onInit时,它不会被调用,但当我将其定义为匿名函数时,它会被调用,而且我无法100%确定原因。任何帮助都会很好。一个普遍的问题是,有没有人对如何将app.component()模拟到jav

我现在不能使用Angular 2,但我喜欢它更面向对象的方式(组件是类)。我们开始使用Angular 1.5+组件,为了最终简化转换,我正在考虑使用类的新javascript功能来创建Angular 1.5+组件类。部分原因是为了看看我能想出什么

我的具体问题是,当我通过将$onInit设置为类函数来定义$onInit时,它不会被调用,但当我将其定义为匿名函数时,它会被调用,而且我无法100%确定原因。任何帮助都会很好。一个普遍的问题是,有没有人对如何将app.component()模拟到javascript类有什么想法

class Component {
    constructor(name, templateUrl, bindings, controllerAs) {
        app.component(name, {
            templateUrl: templateUrl,
            bindings: bindings,
            controllerAs: controllerAs,
            controller: this.controller
        });
    }

    controller() {
        console.log("Inside Component controller");
    }
}

class ListNames extends Component {
    constructor() {
        super("listNames", "ListNames.html", { names: '<' }, "lstNames");
    }

    onInit() {
        console.log("onInit called");
    }

    // overrided method
    controller() {
        console.log("ListNames controller()");
        /*this.$onInit = function () {
            console.log("onInit called");
        }*/
        this.$onInit = this.onInit; // <-- this doesn't work but the above does
    }
}

lstNames = new ListNames();
类组件{
构造函数(名称、模板URL、绑定、控件){
应用组件(名称{
templateUrl:templateUrl,
绑定:绑定,
controllerAs:controllerAs,
控制器:这是控制器
});
}
控制器(){
控制台日志(“内部组件控制器”);
}
}
类ListNames扩展组件{
构造函数(){

超级(“listNames”、“listNames.html”,{names:'您不能将类方法用作构造函数,即this
this.controller
将不起作用。这是奇怪的。使用this.controller似乎确实起作用。它调用我的子类控制器函数。但它不适用于$onInit。但是,在controller()中的匿名函数中设置$onInit子类控制器()起作用。将
$onInit
设置为
controller()中的匿名函数因为组件的
controller
controller
函数,而不是整个类。不能将类方法用作构造函数,也就是说,this
this.controller
将不起作用。这很奇怪。使用this.controller似乎确实起作用。它调用了我的子类controller函数。但它不起作用sn不适用于$onInit。但是,在controller()子类controller()中的匿名函数中设置$onInit确实有效。将
$onInit
设置为
controller()子类controller()中的匿名函数因为组件的
控制器
控制器
函数,而不是整个类,所以不起作用。