我创建了一个Session
对象:
App.Session = Ember.Object.extend({
user: null,
userID: '',
});
我注入了这个对象:
Ember.Application.initializer({
name: 'login',
initialize: function (container, application) {
App.register('session:main', App.Session, { instantiate: false, singleton: true });
// Add `session` object to route to check user
App.inject('route', 'session', 'session:main');
// Add `session` object to controller to visualize in templates
App.inject('controller', 'session', 'session:main');
App.register('firebase:main', App.Firebase);
// Add `session` object to route to check user
App.inject('route', 'firebase', 'firebase:main');
// Add `session` object to controller to visualize in templates
App.inject('controller', 'firebase', 'firebase:main');
}
});
我想按照以下步骤将userID
属性设置为Session
当前用户的ID:
Ember.Route.reopen({
beforeModel: function (transition) {
var isAuth = false;
var user = '';
var store = this.store;
var _this = this;
var firebase = new Firebase("https://dynamicslife.firebaseio.com");
firebase.onAuth(function(authData) {
if (authData) {
isAuth = true;
_this.session.userID = authData.id; //THIS OPERATIONS IS NOT WORKING!!!!!!
} else {
isAuth = false;
}
});
// These routes you do not need to be logged in to access.
var openRoutes = ['home','index','about','stories'];
var testMode = false;
if (testMode == false) {
if (openRoutes.indexOf(transition.targetName) === -1 && isAuth === false) {
console.log('Please login to access this information');
this.transitionTo('stories');
}
}
}
});
在上面由标识的代码表达式中//THIS OPERATIONS IS NOT WORKING!!!!!!
,,authData.id
包含正确的ID值。但是,_this.session.userID
仍然没有定义。
我尝试替换为_this.session.userID = authData.id;
,_this.session.set('userID', authData.id);
但这给了我同样的错误。
我认为也许Session对象没有注入Ember.Route.reopen
。在这种情况下,如何从中访问Session对象Ember.Route.reopen
?
由于session.userID
未定义,因此出现以下错误:
Error while processing route: statistics.index session is not defined ReferenceError: session is not defined
当Ember运行时:
App.StatisticsRoute = Ember.Route.extend({
model: function() {
return this.store.find('user', session.userID);
},
});
您告诉它不要实例化App.Session
,这意味着它是您要使用的对象,但这class
不是一个instance
App.register('session:main', App.Session.create(), { instantiate: false, singleton: true });
并且session
存在于this
路由中,而不存在于全局名称空间中。
App.StatisticsRoute = Ember.Route.extend({
model: function() {
return this.store.find('user', this.session.get('userID'));
},
});
而且您绝对应该使用二传手
_this.session.set('userID', authData.id);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句