操作不是由Ember CLI Simple Auth ApplicationRouteMixin触发的

时间:2014-07-06 17:55:22

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

我正在使用Ember CLI并成功集成了Simple Auth Addon。不幸的是,我现在面临一个问题,我似乎无法在项目的sessionAuthenticationFailed触发ApplicationRoute动作。我已经使用浏览器版本的Ember Simple Auth成功完成了这项工作,但我现在真的想使用Addon for Ember CLI,并且想出这个!目前我的ApplicationRoute在Coffescript中看起来像这样:

`import Ember from 'ember'`
`import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin'`
`import Session from 'simple-auth/session'`

ApplicationRoute = Ember.Route.extend ApplicationRouteMixin,
  actions:
    sessionAuthenticationFailed: (error) ->
      debugger

`export default ApplicationRoute`

我还尝试重新打开ApplicationRouteMixin并在函数中设置debugger,这也无效。至于我可以遵循Ember Simple Auth的源代码,Session通过在_this.trigger('sessionAuthenticationFailed', error)函数中调用authenticate来触发事件。我还将工作版本与当前不工作的版本进行了比较,当我在调用触发器后逐步执行代码时,我最终进入接收对象的sendEvent函数,在这种情况下,它是Ember简单验证Session,eventName,params和actions。这里有趣的是,在这部分代码中从Session中读取了一些关于侦听器的元数据:

var meta = obj[META_KEY];
actions = meta && meta.listeners && meta.listeners[eventName];

在我的情况下meta.listeners[eventName]undefined意味着没有sessionAuthenticationFailed事件的监听器,因此没有任何东西被调用,我最终没有用我的动作捕捉事件

现在最大的问题当然是为什么它似乎没有为这个事件注册任何听众。是否有其他人已经使用Ember CLI Simple Auth Addon并成功挂钩了sessionAuthenticationFailed事件?如果有这样的帮助将不胜感激!

干杯, 戴夫!

修改 通过阅读源代码的注释,我看到如果在扩展的ApplicationRoute中使用了beforeModel钩子,我必须通过this._super()调用父的beforeModel函数。我想我离解决这个问题还有一步之遥!

1 个答案:

答案 0 :(得分:1)

好的,我解决了这个问题。因此,我在beforeModel(transition)中实现了ApplicationRoute挂钩来加载翻译,但没有使用this._super(transition)调用父函数。如果您遇到与我描述的相同的问题,这可能是它无法正常工作的原因之一!