Javascript 更面向对象的Angular 1.5+;成分
我现在不能使用Angular 2,但我喜欢它更面向对象的方式(组件是类)。我们开始使用Angular 1.5+组件,为了最终简化转换,我正在考虑使用类的新javascript功能来创建Angular 1.5+组件类。部分原因是为了看看我能想出什么 我的具体问题是,当我通过将$onInit设置为类函数来定义$onInit时,它不会被调用,但当我将其定义为匿名函数时,它会被调用,而且我无法100%确定原因。任何帮助都会很好。一个普遍的问题是,有没有人对如何将app.component()模拟到javascript类有什么想法Javascript 更面向对象的Angular 1.5+;成分,javascript,angularjs,Javascript,Angularjs,我现在不能使用Angular 2,但我喜欢它更面向对象的方式(组件是类)。我们开始使用Angular 1.5+组件,为了最终简化转换,我正在考虑使用类的新javascript功能来创建Angular 1.5+组件类。部分原因是为了看看我能想出什么 我的具体问题是,当我通过将$onInit设置为类函数来定义$onInit时,它不会被调用,但当我将其定义为匿名函数时,它会被调用,而且我无法100%确定原因。任何帮助都会很好。一个普遍的问题是,有没有人对如何将app.component()模拟到jav
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:'您不能将类方法用作构造函数,即thisthis.controller
将不起作用。这是奇怪的。使用this.controller似乎确实起作用。它调用我的子类控制器函数。但它不适用于$onInit。但是,在controller()中的匿名函数中设置$onInit子类控制器()起作用。将$onInit
设置为controller()中的匿名函数因为组件的controller
是controller
函数,而不是整个类。不能将类方法用作构造函数,也就是说,thisthis.controller
将不起作用。这很奇怪。使用this.controller似乎确实起作用。它调用了我的子类controller函数。但它不起作用sn不适用于$onInit。但是,在controller()子类controller()中的匿名函数中设置$onInit确实有效。将$onInit
设置为controller()子类controller()中的匿名函数因为组件的控制器
是控制器
函数,而不是整个类,所以不起作用。