技術メモ(主に自分向け)

短期記憶の自分向けの技術メモです。

Cookieの保存方法

テキストボックスに入力した情報をcookieで1ヶ月値を保存する場合

【cmp側】

//attribute
<aura:attribute access="private" type="Boolean" name="hasCookie" default="false">
<aura:attribute access="private" type="String" name="inputCookie" default="">


~省略~

//テキストボックス
<input id='cookie_input' class="xxx" type="text" name="testTextBox" value={!v.inputCookie} placeholder="未入力の時に表示する内容"/>

【controller.js側】
・初期処理のメソッド内

// cookie情報チェック
var checkInfo = document.cookie.split(';');
checkInfo.forEach(function(value){
 // cookie名と値に分ける
 var content = value.split('=');
 // cookie名が「inputcookie」の場合、コンポーネントに設定
 if (content[0] == 'inputcookie') {
  component.set('v.hasCookie', true);
  component.set('v.inputCookie', content[1]);
  return;
 }
});


cookie保存処理のメソッド

// 入力した値
var inputVal = document.getElementById('cookie_input').value;
// cookie保存期間(30日を秒数に変換)
var deadline = 30*24*60*60;

// cookie保存
if (inputVal != '' && inputVal != null) {
 // 初めてcookieが保存される場合
 if (!component.get('v.hasCookie')) {
  var cookie = "inputcookie=" + inputVal + "; Max-Age=" + deadline + "; path=/xxxxx/ ;";
  document.cookie = cookie;
  component.set('v.inputCookie', inputVal);  //cmp側で定義
 }
 // すでに保存されているcookie情報と一致しない場合
 else if (component.get('v.inputVal') != document.getElementById('cookie_input').value) {
  var cookie = "inputcookie=" + inputVal + "; Max-Age=" + deadline + "; path=/xxxxx/ ;";
  document.cookie = cookie;
  component.set('v.inputCookie', inputVal);  //cmp側で定義
 }
}