前提・実現したいこと
Vue.jsで点数計算をするアプリを制作しています。
「+」と「ー」のボタンを押下すると、フォーム内の打数の数値が増減する機能は実装出来ました。
現在は5つの打数を合計して、総打数に表示させる機能を実装中です。
発生している問題・エラーメッセージ
{{count}}で表示させようとすると、エラーになります。
「countはコンポーネント内で定義されているので、コンポーネントの外では使えません」といった意味のエラーメッセージだと思います。
私としても、「確かにその通りだよなあ」と思います。
コンポーネントの外の処理に問題があると思うので、new Vue({});の中にコードを書き加える必要があるのかと思いますが、具体的にどうすれば良いのかわかりません。
Property or method "count" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property
該当のソースコード
HTML
1 <table class="table table-bordered"> 2 <!-- 見出し行 --> 3 <thead> 4 <tr> 5 <th class="col-sm"></th> 6 <th class="col-lg bg-light">ゲート①</th> 7 <th class="col-lg">ゲート②</th> 8 <th class="col-lg bg-light">ゲート③</th> 9 <th class="col-lg">ゲート④</th> 10 <th class="col-lg bg-light">ゴール</th> 11 <th class="col-md">総打数</th> 12 <th class="col-md bg-light">加算点</th> 13 <th class="col-md">Total</th> 14 </tr> 15 </thead> 16 <!-- 1行目 --> 17 <tbody class="counter"> 18 <tr> 19 <th>A</th> 20 <th class="bg-light"> 21 <counter></counter> 22 </th> 23 <th> 24 <counter></counter> 25 </th> 26 <th class="bg-light"> 27 <counter></counter> 28 </th> 29 <th> 30 <counter></counter> 31 </th> 32 <th class="bg-light"> 33 <counter></counter> 34 </th> 35 <th> 36 <div class="sum">{{ count }}</div> 37 </th> 38 <th class="bg-light"> 39 <div class="addition"></div> 40 </th> 41 <th> 42 <div class="total"></div> 43 </th> 44 </tr> 45 </tbody> 46 </table> 47 48
JavaScript
1const counter = { 2 data() { 3 return { 4 count: 0, 5 }; 6 }, 7 methods: { 8 countUp() { 9 if ( this.count < 0 ) { 10 this.count = 0; 11 } else { 12 this.count += 1; 13 } 14 }, 15 countDown() { 16 if ( this.count <= 0 ) { 17 this.count = 0; 18 } else { 19 this.count -= 1; 20 } 21 }, 22 }, 23 template: ` 24 <form class="ml-2 mr-2"> 25 打数 26 <div class="form-group input-group"> 27 <div class="input-group-prepend"> 28 <button type="button" @click="countUp" class="btn btn-primary">+</button> 29 </div> 30 <input type="number" v-model="count" min="0" disabled class="form-control"> 31 <div class="input-group-append"> 32 <button type="button" @click="countDown" class="btn btn-secondary">-</button> 33 </div> 34 </div> 35 </form> 36 `, 37}; 38 39new Vue({ 40 el: '.counter', 41 components: { 42 'counter': counter, 43 'hoop-in': hoopIn, 44 }, 45});
試したこと
new Vue({});の中にcomuputedを使った処理を書いたりしたのですが、ダメでした。
v-model="count"でcountという名前でフォームの数値は取得していると思うので、そのcountをコンポーネントの外で使用することが出来れば解決出来るのではと感じています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/06 10:47
2020/10/06 10:51