" Ember Simple Auth"来自组件的invalidateSession

时间:2015-03-15 14:09:46

标签: javascript ember.js ember-cli ember-simple-auth

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

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

然而,当点击&#34;退出&#34;按钮我收到此错误

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

如何制作&#34; invalidateSession&#34;可以从组件中获得吗?

2 个答案:

答案 0 :(得分:2)

您可以实施自己的invalidateSession操作:

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

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

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

答案 1 :(得分:0)

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

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

ApplicationRoute = Ember.Route.extend ApplicationRouteMixin,

该操作应该冒泡到应用程序路径,然后处理它。

请参阅文档here