を更新しません、私は以下のように、この非常に簡単Vueのjsのページを持っている: - テーブルと入力フォームVueのJS - 更新インデックスの値が第2のコンポーネントのビュー
<html>
<head>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="main-container">
<div id="contact-table">
<table>
<thead>
<tr>
<th>Contact Name</th>
<th>Email</th>
</tr>
</thead>
<tbody v-for="contact in contacts">
<tr v-on:click="selectContact(contact.index)">
<td>
{{contact.name}}
</td>
<td>
{{contact.email}}
</td>
</tr>
</tbody>
</table>
</div>
<div id="contact-form">
<input type="text" v-model="contactName"/>
<input type="text" v-model="contactEmail"/>
<button type="button" v-on:click="updateContact">Update Contact</button>
</div>
</div>
</body>
<script>
var hub = {
contacts: [
{
name: "James",
email: "[email protected]",
index: 0
},
{
name: "Mary",
email: "[email protected]",
index: 1
}
],
index: 0
};
var contactTable = new Vue({
el: "#contact-table",
data: {
contacts: hub.contacts
},
methods: {
selectContact: function(index) {
hub.index = index;
console.log(hub.index);
}
}
});
var contactForm = new Vue({
el: "#contact-form",
data: {
contactName: hub.contacts[hub.index].name,
contactEmail: hub.contacts[hub.index].email
},
methods: {
updateContact: function() {
hub.contacts[hub.index].name = this.contactName;
hub.contacts[hub.index].email = this.contactEmail;
}
}
});
</script>
</html>
基本的には2つのVueの部品が含まれています。表の行をクリックすると、入力フォームの値が変更されますが、「連絡先を更新」ボタンをクリックすると、フォームの詳細が更新されます。
2番目の部分はうまくいきますが、テーブルの行をクリックすると、hub.indexはうまく更新されていますが、入力フォームのビューは表示されません。
私はこれが双方向バインディングであるべきだと思うので、ここでどこが間違っているのか不思議です。
[イベントバス](https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication)や[状態管理パターン](https ://vuejs.org/v2/guide/state-management.html) – Phil