Ember cli 错误 ember-simple-auth
Ember cli error with ember-simple-auth
我正在尝试将 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
。仍然是同样的错误:
我会在会话上定义一个 currentUser
方法,returns 用户作为承诺:
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')
});
此外,您最好定义自己的客户会话 class,它从 Ember 简单验证 Session
class 扩展,而不是重新打开它。
与 marcoow 所说的类似,但我们使用的是 promise 对象:
app/initializers/simple-auth-session.js
import Session from 'simple-auth/session';
import DS from 'ember-data';
export default {
name: 'simple-auth-custom-session',
before: 'simple-auth',
initialize: function(container) {
Session.reopen({
currentUser: function() {
return DS.PromiseObject.create({
promise: container.lookup('store:main').find('user', 'me')
});
}.property()
});
}
};
我正在尝试将 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
。仍然是同样的错误:
我会在会话上定义一个 currentUser
方法,returns 用户作为承诺:
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')
});
此外,您最好定义自己的客户会话 class,它从 Ember 简单验证 Session
class 扩展,而不是重新打开它。
与 marcoow 所说的类似,但我们使用的是 promise 对象:
app/initializers/simple-auth-session.js
import Session from 'simple-auth/session';
import DS from 'ember-data';
export default {
name: 'simple-auth-custom-session',
before: 'simple-auth',
initialize: function(container) {
Session.reopen({
currentUser: function() {
return DS.PromiseObject.create({
promise: container.lookup('store:main').find('user', 'me')
});
}.property()
});
}
};