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

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

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

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

Q&A

解決済

1回答

1250閲覧

vueのv-ifがうまくいかない

Sonono

総合スコア85

Vue.js

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

0グッド

0クリップ

投稿2021/11/12 08:30

実現したいこと

  • 初期状態ではstatusがhelloなので、helloと表示されていて欲しい
  • clickをクリックすると、statusがbyeになるので何も表示されなくなってほしい

困っていること

全体的にvueが全く反映されていないように思います...。書き方が悪いのかわかりませんが、教えていただけると幸いです。

  • status === 'hello'をhello1などに変えてもhello!が描画されてしまうので、v-ifがうどいていないように感じる
  • clickを押してもchangeStatusに飛ばない
<script src="https://unpkg.com/vue@next"></script> <div id="test" v-if="status === 'hello'"> hello! <button v-on:click="changeStatus">click</button> </div> <script> const test = { data() { return { status: 'hello' } }, method: { changeStatus() { this.status = 'bye' console.log(this.status) } } } const app = Vue.createApp(test) app.mount('#test') </script>

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

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

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

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

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

guest

回答1

0

ベストアンサー

methodsが間違ってmethodになってしまっているのがchangeStatusが呼ばれない原因です。
コンソールにエラーが出力されているのでそれをよく確認してください。

[Vue warn]: Property "changeStatus" was accessed during render but is not defined on instance. at <App>

それと、v-ifappをマウントしている要素(#test)には適用されないので、
別の要素で括ってやってください。

html

1<div id="test"> 2 <div v-if="status === 'hello'"> 3 hello! 4 <button v-on:click="changeStatus">click</button> 5 </div> 6</div>

投稿2021/11/12 09:56

surface_0

総合スコア497

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

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

Sonono

2021/11/14 11:28

解決しました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問