【发布时间】:2015-01-14 16:03:20
【问题描述】:
我正在尝试将 ember-simple-auth 与自定义会话一起使用。登录后,当我尝试在模板中访问会话时,如下所示:
{{session.current_user.email}}
我收到以下错误:
Uncaught Error: Assertion Failed: Required contextualElement for view <Ember._HandlebarsBoundView:ember375> is missing
如果我重新加载页面,错误就会消失。此外,如果我使用未绑定的助手,它就会消失:
{{unbound session.current_user.email}}
当 user_id 改变时,我有以下代码来设置 current_user:
import Session from 'simple-auth/session';
import Ember from 'ember';
export function initialize(container) {
Session.reopen({
setCurrentUser: function() {
var id = this.get('user_id');
var _this = this;
if(!Ember.isEmpty(id)) {
return container.lookup('store:main').find('user', id).then(function(user){
_this.set('current_user', user);
});
}
}.observes('user_id')
});
}
export default {
name: 'authentication',
before: 'simple-auth',
initialize: initialize
};
我做错了什么?
编辑#1:
我应该把这段代码放在哪里?初始化器? app/sessions/custom.js?
export default Session.extend({
currentUser: function() {
var userId = this.get('user_id');
if (!Ember.isEmpty(userId)) {
return this.container.lookup('store:main').find('user', userId);
}
}.property('user_id')
});
然后在我设置的environment.js中:
ENV['simple-auth'] = {
session: 'session:custom'
}
并在初始化程序中注册自定义会话?
container.register('session:custom', Session);
编辑#2:
将自定义会话移至 sessions/custom.js。还是一样的错误:
【问题讨论】:
标签: javascript ember.js ember-cli ember-simple-auth