Javascript Angularjs ES6类指令
我试图使用类来定义一个指令。html确实显示了,它确实显示了它正在调用ctor和控制器函数。但是,我有一个类方法,我想通过ng单击在html中调用它,但它没有被调用 注意,我正在使用1.3x,此时无法升级 指令:Javascript Angularjs ES6类指令,javascript,angularjs,Javascript,Angularjs,我试图使用类来定义一个指令。html确实显示了,它确实显示了它正在调用ctor和控制器函数。但是,我有一个类方法,我想通过ng单击在html中调用它,但它没有被调用 注意,我正在使用1.3x,此时无法升级 指令: class StoreHours{ constructor(){ console.log("inside ctor"); this.restrict = 'E'; this.templateUrl = 'storeHours.html'; thi
class StoreHours{
constructor(){
console.log("inside ctor");
this.restrict = 'E';
this.templateUrl = 'storeHours.html';
this.bindToController = true;
this.controllerAs = 'vm';
this.scope = {
hours: '=',
index: '=',
addNewHour: '&'
};
}
controller(){
console.log("inside controller");
}
// the member metod that I want ng-click to call
addNew(newHour){
var vm = this;
console.log("addNew()");
vm.addNewHour({ hour: newHour, index: vm.index });
vm.newHour = "";
}
// don't need this but just showing
link(scope, element, attrs){
}
}
app.directive('storeHours', () => new StoreHours);
HTML:
我是商店营业时间的组成部分!
{{hrs}}
新增
addNew()
方法附加到类作用域,无论您是否需要将其附加到控制器()
作用域(这是不同的)
将该方法添加到控制器中,您应该不会有问题
controller(){
console.log("inside controller");
var vm = this;
vm.addNew = function(newHour){
console.log("addNew()");
vm.addNewHour({ hour: newHour, index: vm.index });
vm.newHour = "";
}
}
没别的办法了吧?我不喜欢这种语法,但如果没有其他方法,那就行了;那么函数可以在类级别定义吗?基本上,ctor中的“this”与controller()中的“this”是不同的对象,对吗?那么,我想如何从控制器内部获得“this”的ctor呢?我认为这是不可能的,你应该使用函数的作用域,但这不值得。在我看来,更清楚的是,您的控制器方法应该在您的控制器内,并且不会弄乱指令范围。
controller(){
console.log("inside controller");
var vm = this;
vm.addNew = function(newHour){
console.log("addNew()");
vm.addNewHour({ hour: newHour, index: vm.index });
vm.newHour = "";
}
}