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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1082閲覧

DB(PHP, Laravel5.5)の値と、JS(vue.js)の値を比べる方法

kazoogon

総合スコア281

Vue.js

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/04/12 08:43

実現したいこと

DBからとってきた値と、jsでの値を比較する。

現状

Laravel5.5, vue.jsを使用し学校システムを構築。
<画像の説明>
先生が時間の空いている時間をclick
→clickしたマス目の色が非同期で変わる(vue.jsでisActiveのデータをtrue, falseに切り替えてcssにて制御しています)
→ajaxにて時間と日付の情報がDBに挿入される(画像のマス目にあるような「1,2」「1,3」などの値」
イメージ説明
ここまではできたが、画面遷移をすると色は戻ってしまう

試してみたこと

 ①jsにて「localstorageにデータを持たせとく」しかしこれだと違うPCを使用すると反映されない
②DBからとってきた値とjsに保管されてるあたいを比較し、もし一緒だったらそのマス目をisActiveをtrueにする、これで実装予定

「DBからとってくる値(Controllerから$scheduleとしてviewに値を渡す)」

array (size=5) 0 => array (size=2) 'time_id' => int 2 'date_id' => int 3 1 => array (size=2) 'time_id' => int 6 'date_id' => int 1 2 => array (size=2) 'time_id' => int 2 'date_id' => int 6 3 => array (size=2) 'time_id' => int 11 'date_id' => int 6 4 => array (size=2) 'time_id' => int 5 'date_id' => int 0

「view部分」(rowIndex,colIndex) == ($schedule->time_id, $schedule->date_id)の場合はisActiveをtrueにしたいが、それは可能なのか。。。??

<tr v-for="(row,rowIndex) in rows"> <th scope="row">@{{ row.time }}</th> <td scope="row" class="hoge" v-for='(col,colIndex) in row.columns' v-bind:class='{ active: col.isActive }' v-on:click='empty(rowIndex,colIndex)'>@{{ col.date }}:@{{ row.number }}</td> </tr>

「js部分」

data: { rows: [ { number: 0, time: "9:00-10:00", columns: [ {date: '0', message: 'nie można', isActive : false}, {date: '1', message: 'nie można', isActive : false}, {date: '2', message: 'nie można', isActive : false}, {date: '3', message: 'nie można', isActive : false}, {date: '4', message: 'nie można', isActive : false}, {date: '5', message: 'nie można', isActive : false}, {date: '6', message: 'nie można', isActive : false} ] }, { number: 1, time: "10:00-11:00", columns: [ {date: '0', message: 'nie można', isActive : false}, {date: '1', message: 'nie można', isActive : false}, {date: '2', message: 'nie można', isActive : false}, {date: '3', message: 'nie można', isActive : false}, {date: '4', message: 'nie można', isActive : false}, {date: '5', message: 'nie można', isActive : false}, {date: '6', message: 'nie można', isActive : false} ] } //以下省略 ], },

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Laravel 5.5 BladeテンプレートのJSONのレンダの説明にあるように、コントローラから渡す値をjsonにしてしまえばそのままJavascriptの変数に入れられるので、Javascriptの処理で比較できるのではないでしょうか?

さらに言えばVue.jsで管理しているデータ構造 rows:{} そのものの構造をコントローラーから返してあげれば、比較とか考えなくてもそのままVue.jsのデータに入れることで画面に反映できるのではないでしょうか?

Vue.jsで画面更新したときの処理は Vue.js ガイド-インスタンスライフサイクルフックに説明のある mounted内に記述するのが良いと思います。

投稿2018/04/12 16:06

編集2018/04/12 16:16
euledge

総合スコア2404

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

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

kazoogon

2018/04/13 06:24

回答ありがとうございます。 ご指摘の通りjson_encodeを使用し上手くいきました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問