"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'}}
尝试在组件模板中执行此代码
// 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'}}