Ember Octane 注销按钮消失
Ember Octane Logout button disappears
我正在升级到 Ember Octane,我修改了模板 HBS 以调用组件 JS。当我使用 Ember Classic 时,注销按钮存在并且有效。但是,当我转换为 Octane 时,注销按钮就会消失。 o_O
在模板 HBS 上显示注销按钮的正确方法是什么?注意:我没有组件 HBS 文件。 Ember Octane 是否需要这样做?
经典模板 HBS 片段:
<li><a href="#" onclick={{action "logout"}}>Logout</a></li>
Octane 模板 HBS 片段:
<li><a href="#" onclick={{on "submit" this.logout}}>Logout</a></li>
Octane 组件 JS(适用于经典模板,但不适用于 Octane 模板):
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class Navigation extends Component {
@service session
@service currentClient
@action
logout(ev) {
ev.preventDefault();
this.session.invalidate();
}
}
这里的问题是 on
修饰符的使用不当。必须在元素 space 上使用 on
修饰符,而在您的代码段中, on
修饰符用作助手。
应该像这样使用:
<button {{on "click" this.logout}}> Logout </button>
这意味着,我们要求框架为 click
事件注册提供的函数 this.logout
。
和不是作为:
<button onclick={{on "click" this.logout}}> Logout </button>
This guide 应该有助于从经典事件处理迁移到最新的 Octane 方式。
我正在升级到 Ember Octane,我修改了模板 HBS 以调用组件 JS。当我使用 Ember Classic 时,注销按钮存在并且有效。但是,当我转换为 Octane 时,注销按钮就会消失。 o_O
在模板 HBS 上显示注销按钮的正确方法是什么?注意:我没有组件 HBS 文件。 Ember Octane 是否需要这样做?
经典模板 HBS 片段:
<li><a href="#" onclick={{action "logout"}}>Logout</a></li>
Octane 模板 HBS 片段:
<li><a href="#" onclick={{on "submit" this.logout}}>Logout</a></li>
Octane 组件 JS(适用于经典模板,但不适用于 Octane 模板):
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class Navigation extends Component {
@service session
@service currentClient
@action
logout(ev) {
ev.preventDefault();
this.session.invalidate();
}
}
这里的问题是 on
修饰符的使用不当。必须在元素 space 上使用 on
修饰符,而在您的代码段中, on
修饰符用作助手。
应该像这样使用:
<button {{on "click" this.logout}}> Logout </button>
这意味着,我们要求框架为 click
事件注册提供的函数 this.logout
。
和不是作为:
<button onclick={{on "click" this.logout}}> Logout </button>
This guide 应该有助于从经典事件处理迁移到最新的 Octane 方式。