我正在使用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函数。我想我离解决这个问题还有一步之遥!
答案 0 :(得分:1)
好的,我解决了这个问题。因此,我在beforeModel(transition)
中实现了ApplicationRoute
挂钩来加载翻译,但没有使用this._super(transition)
调用父函数。如果您遇到与我描述的相同的问题,这可能是它无法正常工作的原因之一!