我試圖將值設置爲userSessionStorage
,當我從authenticate()函數訪問它時,它似乎正常工作。ember:TypeError:無法讀取未定義的屬性'set'
但是,它在.then()承諾中不起作用。
應用程序/控制器/ show.js
import Ember from 'ember';
import { storageFor } from 'ember-local-storage';
export default Ember.Controller.extend({
session: Ember.inject.service('session'),
userSessionStorage: storageFor('user'),
authenticator: 'authenticator:custom',
actions: {
authenticate: function() {
var credentials = this.getProperties('identification', 'password');
// ok
this.set('userSessionStorage.username', credentials.identification);
this.get('session').authenticate('authenticator:custom', credentials)
.then(function(){
// error: TypeError: Cannot read property 'set' of undefined
this.set('userSessionStorage.username', credentials.identification);
})
.catch((message) => {
console.log("message: " + message);
this.controller.set('loginFailed', true);
});
}
}
});
將您傳遞給'then'的函數重寫爲保持'this'周圍值的箭頭函數。或者用'const self = this;'在'authenticate'方法的頂部捕獲'this'的這個值,然後使用'self.set'。 – 2017-04-23 04:47:48
@torazaburo你很好:)你可以請把這個作爲答案,以便我可以把它作爲正確的答案? –
爲什麼不在你的驗證器中設置'userSessionStorage.username'? –