質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

4045閲覧

Vue で入力の日付から祝日をチェックし、祝日だった場合はフラグをもたせたい。

Blando

総合スコア8

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/12/01 15:52

編集2018/12/02 06:33

Vue で入力の日付から祝日をチェックし、祝日だった場合はフラグをもたせたいと考えております。

1.日付はdatepicker をつかってデータを入力します。
2.入力された日付が土日や祭日だった場合はholiday_flgに値をもたせたいとおもいます。
祭日はJson(holiday.json)ファイルから取得し、チェックします。

以下のような記載をしていると無限ループに陥ります。
どのような記載をしていいかわかりません。

データを入力

<div id="app_start"> <date-picker name="checkdate" v-model="date_s" :config="options" ></date-picker> <p>{{date_s}}</p> </div> <script type="text/javascript"> // Initialize as global component Vue.component('date-picker', VueBootstrapDatetimePicker); new Vue({ el: '#app_start', data: { date_s: '2018/12/02', holiday_flg:'', holidays:'', options: { format: 'YYYY/MM/DD', minDate: '2018/12/02', } }, watch: { date_s: function (value){ this.holiday_flg=this.CheckHoliday(this.date_s); } }, methods : { CheckHoliday:function(i_date){ var check_flg; var formated_date = new Date(i_date); var custom_date = formated_date.getDay(); if(custom_date == 0){ //日曜の時 check_flg=1; }else if(custom_date == 6){ //土曜の時 check_flg=1; }else{ //祭日Jsonのデータと比較する。 check_flg=this.CheckNatinalHoliday(formated_date); alert(check_flg); } return check_flg; }, CheckNatinalHoliday : function (d){ //holiday.jsonと入力値のdを比較して //祭日ならholiday_flg=1にする axios.get('holiday.json').then(response => (this.holidays = response.data)); var value=moment(d).format('YYYY/MM/DD'); var list=this.holidays; var chc_d=0; for(var i in list) { var temp = list[i]; if(temp.holiday.indexOf(value) !== -1) { chc_d=1; } } return chc_d; }, }, }); </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Blando

2018/12/02 06:34

ありがとうございます。
karamarimo

2018/12/04 07:13

何が無限ループになるのでしょうか。
guest

回答2

0

自己解決

他にも機能をもたせているため、詳細を記載するのが手間なので割愛します。
自己解決しました。

投稿2018/12/07 04:41

Blando

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

watchのdate_sでdatepickerが操作されたかを検知をしていますが、

datepickerが操作される→date_sが変更されwatchのイベントが実行される→イベント内で何故かdate_sの代入が実行される→date_sが変更されwatchのイベントが実行される…(繰り返し)

という無限ループに陥っているのかと思われます。(このソースコードのみでは断定はできませんが。。)

datepickerのchangeイベント(@dp-change)にて操作の検知をしてみてください。

<date-picker name="checkdate" v-model="date_s" :config="options" @dp-change="操作後の処理の関数"></date-picker>

投稿2018/12/06 12:14

編集2018/12/06 12:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Blando

2018/12/07 04:40

ありがとうございます。 自己解決しました。
退会済みユーザー

退会済みユーザー

2018/12/07 04:44 編集

このご回答で解決するのであれば、評価をお願いいたします。 全く違うのであれば、解決方法を回答に記述お願いいたします。
退会済みユーザー

退会済みユーザー

2018/12/07 05:35

またはベストアンサーとして指定お願いいたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問