フォームでbootstrap-daterangepickerを使用しています。私が現在この選択の値を取得している方法は機能しますが、値を取得している方法は良い方法ではないようです。
セッションを使用してフィールドの選択を保持し、完了したらそれらの設定を解除するのは悪いようです。何かを見逃していないことを確認したいだけです。
入力フィールドから値を取得することはできますが、日付を引き出すために文字列を解析する必要があります。daterangepickerの日付形式を変更した場合、解析を変更する必要があるため、これを行うとメンテナンスの問題になる可能性があります。
フォームフィールド:
<input type="text" name="carpool_eventDates" id="carpool_eventDates" />
コンポーネントをアクティブ化するJS:
Template.add_event.rendered = function () {
// initialize add event modal;
$('#addEvent')
.modal();
// initialize the date range picker
$('input[name="carpool_eventDates"]').daterangepicker(
// default date range options
{ranges: {'Last 5 Days': [Date.today().add({ days: -4 }), 'today'],
'Next 5 Days': ['today', Date.today().add({ days: 4 })]}
},
// grab the selection
function(start, end) {
Session.set("showAddEventDialogue_dateRangeStart",start);
Session.set("showAddEventDialogue_dateRangeEnd",end);
});
};
JS保存ボタンクリックハンドラー:
Template.add_event.events({
'click button.save-addEventDialogue': function(e, tmpl) {
// Get the date range selection from the session
var start = Session.get("showAddEventDialogue_dateRangeStart");
var end = Session.get("showAddEventDialogue_dateRangeEnd");
// Do something with the dates
// Clear the dates from the session now that we are done with them
Session.set("showAddEventDialogue_dateRangeStart","");
Session.set("showAddEventDialogue_dateRangeEnd","");
// Close the dialogue
Session.set("showAddEventDialogue", false);
}
});
これはこれを行うための良い方法ですか?それとももっと良い方法はありますか?
ありがとう。