我使用Ember CLI创建了以下服务和初始化程序(生成蓝图):
// services/session.js
import Ember from 'ember';
export default Ember.Object.extend({
loggedIn: false,
...
});
// initializers/session.js
export default {
name: 'session',
initialize: function(container, app) {
app.inject('route', 'session', 'service:session');
app.inject('controller', 'session', 'service:session');
}
};
但是,尝试在路由或控制器中访问会话时,会话未定义。我错过了一步吗?
// routes/application.js
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel: function() {
var loggedIn = this.session.get('loggedIn'); // undefined
...
}
});
答案 0 :(得分:2)
你已经99%正确了,这似乎是你访问会话的一个问题。
// routes/application.js
export default Ember.Route.extend({
beforeModel: function() {
var loggedIn = this.get('session.loggedIn');
}
});
答案 1 :(得分:2)
注入的服务是延迟加载的,您必须通过getter this.get('session')
访问它们,而不是直接this.session
。
另外,如果您正在进行身份验证,则可能需要查看Ember-Simple-Auth。