2
我創建了一個Session
對象:Ember.js:不能訪問注入對象
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');
}
});
我想要的Session
的userID
屬性設置的標識當前用戶如下:
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.set('userID', authData.id);
代替_this.session.userID = authData.id;
,但是這給了我同樣的錯誤。
我認爲也許Session對象不會被注入Ember.Route.reopen
。如果是這種情況,我如何才能從Ember.Route.reopen
訪問Session對象?
因爲session.userID
是不確定的,我得到以下錯誤:
Error while processing route: statistics.index session is not defined ReferenceError: session is not defined
當灰燼運行此:
App.StatisticsRoute = Ember.Route.extend({
model: function() {
return this.store.find('user', session.userID);
},
});
謝謝!你的答案是正確的。問題是否可以:是'App.register('session:main',App.Session.create(),{instantiate:false,singleton:true});'相當於'App.register('session:main', App.Session,{singleton:true});'? – 2014-10-28 02:07:37
事實上,它和App.register('session:main',App.Session)一樣;'因爲singleton:true是默認值;)但是我從不迴避在學習時明確定義的東西。 – Kingpin2k 2014-10-28 05:02:46
謝謝。很有幫助。 – 2014-10-29 00:36:23