如何从以下位置切换:
<Checkbox
//do I need it to be @onclick?
onclick={{action "toggleCheckBox" checkBox}}
/>
至:
<Checkbox
{{on "click" this.toggleCheckBox "test"}}
/>
假设我的控制器没有使用类:
import Controller from '@ember/controller';
export default Controller.extend({
actions: {
toggleCheckBox(checkBox) {
//code
}
}
})
2条答案
按热度按时间jjjwad0x1#
尽管你可以在经典的ember类模型中使用新的
on
修饰符语法,但它与Native类语法配合使用效果最好,因为上下文绑定从{{action}}
帮助器移到了@action
装饰器。装饰器的用法与Native类语法配合使用非常直观。1)出于某种原因,如果你仍然需要在经典的ember模型中使用
on
修饰符,你可以用action
装饰器定义来 Package 你的函数(Ember中的装饰器是完全向后兼容的),以便将正确的this
上下文绑定到函数。否则,你就不能在函数内部访问正确的this
。但是,与实际的原生类语法相比,上面的代码片段不太直观:
2)在使用
on
修饰符时,必须使用fn
帮助器将参数传递给处理程序。This Twiddle应该可以帮助您了解这些语法。下面是upgrade guide,它将从传统的事件处理程序转换为新的Octanish语法。Chris's explanation提供了有关新语法的深入解释。
9udxz4iz2#
另一个可能的解决方案是使用ember渲染修改器。每次按下复选框时,都会调用该动作。
其中,“观察”项[0]保存选中值,而项[1]保存整个对象