Vue JS 2.0を使用していますが、これは表示しようとしているテーブルです。すべてが正しく表示されますが、editedlayer(anyPlayer)というメソッドを使用してediredPlayers [any-Player-Id]を更新すると、small
タグの補間値は更新されません。vue補間値が更新されない
editPlayerStat()では、editedPlayers [any-Player-Id]が正しく変更されているかどうかを確認します。しかし何らかの理由でsmall
タグで更新されていません。また、span
タグのv-ifは更新されず、同じ問題があります。
同じメソッドeditPlayerStat()では、私は手作業でplayer.stats.month.goals
を更新していますが、補間されていて、同じ問題があるかどうかを確認することはできません。それはうまく動作します。
私は間違っていますか?
<tr v-if="showMonth" v-for="player in players">
<td><input type="checkbox"></td>
<td>{{ player.name }}</td>
<td><a @click.prevent="editPlayerStat(player._id,'goals',false)" href=""><i class="fa fa-arrow-down"></i></a>
{{ player.stats.month.goals }}
<a @click.prevent="editPlayerStat(player._id,'goals',true)" href=""><i class="fa fa-arrow-up"></i></a>
<span id="changed"> <small>({{ editedPlayers[player._id].stats.goals }})</small></span>
</td>
<td><a @click.prevent="editPlayerStat(player._id,'assists',false)" href=""><i class="fa fa-arrow-down"></i></a>
{{ player.stats.month.assists }}
<a @click.prevent="editPlayerStat(player._id,'assists',true)" href=""><i class="fa fa-arrow-up"></i></a>
<span id="changed" v-if="editedPlayers[player._id].stats.assists > 0"> <small>({{ editedPlayers[player._id].stats.assists }})</small></span>
</td>
</tr>
これは私のeditPlayerStat()メソッドです:
editPlayerStat(id, type, isIncrease) {
console.log('editPlayerStat...');
console.log('editedPlayers[player._id].stats.goals...' + this.editedPlayers[id].stats.goals);
if(isIncrease) {
console.log('increase');
this.editedPlayers[id].stats[type]++;
this.editedPlayers[id].isEdited = true;
} else if(!isIncrease && this.editedPlayers[id].stats[type] > 0) {
console.log('decrease');
this.editedPlayers[id].stats[type]--;
this.editedPlayers[id].isEdited = true;
}
}
別のインスタンス:
私は入力にV-モデルを使用し、横の補間値を表示したときに、私それだけで罰金を更新input
タグ値を更新してください。しかし、オブジェクトplayer
の変更を監視しているときは、時計機能は初めて以外は実行されません。
<input class="form-control" id="name" placeholder="Name" type="text" v-model="player.name">{{ player.name }}
watch: {
player: function(player) {
console.log('from watch... '+JSON.stringify(player));
}
},
methods: {
getPlayerInfo() {
var vm = this;
axios.get('http://localhost:3000/admin/players/info/'+'5847a093a5e13203a4d0455f')
.then(function (response) {
vm.player = response.data;
console.log(response);
console.log(JSON.stringify(vm.player));
console.log('showForm: ' + vm.showForm);
})
.catch(function (error) {
console.log(error);
});
},
created: {
this.getPlayerInfo();
}
出力:あなたが見ることができるように、私はinput
タグに値を編集するときに補間player.name
が更新されていても、player
プロパティのウォッチ機能を除い
Object { data: Object, status: 200, statusText: "OK", headers: Object, config: Object, request: XMLHttpRequest }
{"_id":"5847a093a5e13203a4d0455f","name":"Michael","age":25,"dateOfBirth":"03-04-1998","phone":7987997799,"image":"imgur::djnwkndkjnkn","preferredFoot":"Right","isActive":true,"positions":["CB","RB","RW"]}
showForm: true
from watch... {"_id":"5847a093a5e13203a4d0455f","name":"Michael","age":25,"dateOfBirth":"03-04-1998","phone":7987997799,"image":"imgur::djnwkndkjnkn","preferredFoot":"Right","isActive":true,"positions":["CB","RB","RW"]}
実行されません。最初にplayer
がObjectで初期化されたとき。
fiddleはおそらく道との反応性の問題は、あなたが値を設定しています。あなたは編集プレイヤーコードを投稿できますか? – vbranden
@vbranden私はeditedPlayers [player._id] .stats.goalsを記録しており、それは反応の問題の典型であるええ、 – donnyjeremiah
ええ、変化していることを示しています。 console.logには更新された値が表示されますが、vueは更新された値を表示しません。 Vue.setを使用せずに深いプロパティを設定しているか、「注意事項」のいずれかに遭遇している可能性があります(https://vuejs.org/v2/guide/list.html#Caveats)。値が設定された後にコンテンツがレンダリングされる場合(つまり、遷移/アニメーションの遅延が開いているモーダル) – vbranden