"Ember Simple Auth" 来自组件的 invalidateSession

"Ember Simple Auth" invalidateSession from component

尝试在组件模板中执行此代码

// components/my-component.js
{{#if session.isAuthenticated}}
  <a {{action 'invalidateSession'}}>Sign out</a>
{{else}}
  {{#link-to 'signin'}}Sign in{{/link-to}}
{{/if}}

但是,当我点击 "Sign out" 按钮时,出现了这个错误

Error: <...@component:my-component::ember381> had no action handler for: invalidateSession

如何使 "invalidateSession" 从组件可用?

您需要将简单验证 ApplicationRouteMixin 添加到您的 ApplicationRoute。例如,如果您使用的是 ES6 模块,请执行

import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';

ApplicationRoute = Ember.Route.extend ApplicationRouteMixin,

操作应该冒泡到应用程序路由,在那里将被处理。

查看文档here

您可以只执行自己的 invalidateSession 操作:

actions: {
  invalidateSession: function() {
    this.get('session').invalidate();
  }
}

或者简单地将动作从组件转发到路由:

{{my-component invalidateSession='invalidateSession'}}