をここでは、子コンポーネントである:ここで親が発する - VueJS
Vue.component("training-edit", {
template: "#training-edit-template",
props: ["show"],
data: function() {
return {
form: new Form(),
isWorking: false
}
},
watch: {
show: function (val) {
if (val) {
$("#editTrainingModal").modal("show");
} else {
$("#editTrainingModal").modal("hide");
}
}
},
methods: {
onCancel: function() {
this.$emit("doneEditing");
}
}
});
は、親である:
new Vue({
el: "#trainingEditContainer",
data: {
isWorking: false,
showEditTraining: false
},
methods: {
onEdit: function (e) {
e.preventDefault();
this.showEditTraining = true;
},
doneEditing: function() {
this.showEditTraining = false;
}
}
});
HTML:私は見ることができます
<div id="trainingEditContainer" class="row">
// unrelated stuff here
<training-edit v-bind:show="showEditTraining"></training-edit>
</div>
<script id="training-edit-template" type="x-template">
<modal-right modalId="editTrainingModal">
<div class="modal-header">
<button type="button" class="close" v-on:click="onCancel" aria-label="close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Edit Training</h4>
</div>
@Html.Partial("Partial/_EditPartial")
</modal-right>
</script>
ChromeのVueデベロッパーツールでイベントが送出されているのに何らかの理由で親が聞いていないし、doneEditing
関数が呼び出されることはありません。私はここで何かを見逃していますか?
@Bert親はテンプレートを持っていませんが、子はそうしていますので、私はそれをOPに追加しました。うまくいけば助けてくれますか? – Quiver
です。あなたは何を見守っていますか?ウォッチはオブジェクトでなければなりません。それを超えて、ここでの主な問題は、 'doneEditing'イベントのためのリスナーを決して設定しないということです。 – Bert
@Bertうわー、私は '時計 'の部分を修正しました、それは単にここに投稿するときの誤植でした。イベントを聞くにはどうすればいいですか?私は親が常に聞いていたと思ったが、私はまだ比較的「Vue」の方が新しいので、簡単に間違っているかもしれない。 – Quiver