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'の周囲の値を保持する矢印関数として書き換えます。あるいは 'this self'のこの値を' authent self = this; 'で' authenticate'メソッドの先頭に取り込み、 'self.set'を使います。 –
@torazaburoあなたは良いです:)私は正しい答えとしてそれを置くことができるようにあなたは答えとしてこれを置くことができますか? –
オーセンティケータに 'userSessionStorage.username'を設定してみませんか? –