🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Vue.js

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

PHP

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

Q&A

解決済

1回答

8361閲覧

vue.jsでメソッドが2回呼ばれる

hachiro

総合スコア15

Vue.js

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

PHP

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

0グッド

0クリップ

投稿2019/10/10 01:19

下記コードなのですが、結果のログのように"init_map"メソッドが
2回呼ばれてしまいます。
php(blade)側で一度だけ呼んでいるつもりですが、なぜこうなるのか
ご教授頂ければ幸いです。

PHP

1<!doctype html> 2<head> 3<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 4<script src="https://unpkg.com/axios/dist/axios.min.js"></script> 5<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 6 7</head> 8 9<body> 10 <div id="app"> 11 <div> 12 @{{ init_map(map_data) }} 13 </div> 14 <div> 15 <select v-model="selected"> 16 <option value=""></option> 17 <option v-for="(search_title, index) in search_titles" v-bind:value="search_title"> 18 @{{ search_title }} 19 </option> 20 </select> 21 </div> 22 <div v-for="content in contents" :key="contents.id"> 23 @{{ content.title }} 24 </div> 25 </div> 26 27 <script src="js/top.js"></script> 28</body>

javascript

1var app = new Vue({ 2 el: '#app', 3 data: { 4 contents: [], 5 search_titles: [], 6 search_title: '', 7 selected: '', 8 }, 9 10 mounted () { 11 this.read_data() 12 }, 13 methods: { 14 read_data () { 15 console.log('さいしょ'); 16 let url = '/api/viewtest' 17 axios 18 .get(url) 19 .then((response) => { 20 this.contents = response.data.conf.contents 21 this.search_titles = response.data.conf.search_titles 22 }) 23 .catch((error) => { 24 console.log('えらー'); 25 }) 26 .finally(() => { 27 console.log('ふぁいなりー'); 28 }) 29 }, 30 31 init_map (data, key) { 32 console.log('呼ばれた'); 33 }, 34 35 }, 36 watch: { 37 'selected' (val) { 38 console.log(val) 39 } 40 } 41})

結果:
呼ばれた
さいしょ
呼ばれた

何卒、よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

最初の表示で1度目が呼ばれ、次に data の変数が更新されたのがトリガーになって2度目が呼ばれているように見えます

投稿2019/10/10 05:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hachiro

2019/10/10 06:01

なるほど>< dataの変数が更新されると、再レンダリングされるんですね。 基礎的なことでした・・・ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問