度々お世話になります。
一定時間毎にdata()
の要素を更新したいのですが、値の更新ができません。
配列をv-for
で一覧表示しているのですが、配列に含まれるフラグ用の値だけ更新をしたいと思います。
表示・非表示v-show
の切り替えに使いたい要素です。
配列の中身を更新するためには、map()
で更新できると思ったのですが、
下記に記述するコードでは値の更新ができませんでした。
単純にthis
で特定のデータを丸ごと上書きする事はできました。
配列内の個別のパラメータだけ更新するにはどうしたら良いのでしょうか?
それとも、vue特有の更新方法があるのでしょうか?
コンポーネント
下記のようなコンポーネントを用意しました。
js
1<template> 2<table class="table"> 3 <thead> 4 <tr> 5 <th class="th-time">ID</th> 6 <th class="th-name">ボタン</th> 7 </tr> 8 </thead> 9 <tbody> 10 <tr v-for="entry in entries"> 11 <td>{{ entry.id }}</td> 12 <td class="btns"> 13 <p>{{ entry.fixed }}</p> <!-- 1分間毎に値を更新しているはずですが、何も入力されていない("")の状態です --> 14 <button 15 class="btn btn-secondary" 16 type="button" 17 v-show="entry.fixed">送信</button> <!-- entry.fixedが空なのでv-showで表示できません --> 18 </td> 19 </tr> 20 </tbody> 21</table> 22</template> 23 24<script> 25export default { 26 name: "DisplayEntryComponent", 27 data () { 28 return { 29 entries: [], 30 } 31 }, 32 methods: { 33 updateEntries() { 34 this.entries.map(function(entry){ 35 // 表示確認用に、単純に1を指定しています。 36 // 実際は条件によって指定を分けます。 37 entry.fixed = 1; 38 return entry; 39 }); 40 } 41 42 }, 43 mounted() { 44 this.updateEntries(); 45 46 let self = this; 47 window.setInterval(function () { 48 // 1分間毎に監視を行う 49 self.updateEntries(); 50 }, 1000 * 60); 51 }, 52} 53</script> 54
entries配列の構成
table内のv-for
で繰り返しているentriesについては、api経由で取得したものです。
配列ないの1要素はidのみ管理しています。
{ id: (entryのID) }
updateEntries関数内で設定しているentry.fixed
については、フロントで表示するために新しく配列に追加する要素です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/21 02:16