カスタマイズされたコンポーネントを含むhtmlをいくつか読み込み、そのコンテンツを親コンポーネントの固定ノードにマウントします。残念ながら、私はそれらの間に親子関係がないことがわかったので、動的に挿入されたコンポーネントによって送出されたイベントはルートビューで受け取ることができません。 私は1つのフィドルを作成しました。助けや提案は高く評価されています。 http://jsfiddle.net/matiascx/7Ljygv81/1/動的にマウントされたvuejsコンテンツがroot vueインスタンスの子コンポーネントではないのはなぜですか?
<div id="app">
<button v-on="click: addNewElement()">Add custom Element</button>
<br />
<div id="dynamicloaded"></div>
</div>
JS:あなたが動的に作成するとき
new Vue({
el: '#app',
data: {
sampleElement: '<div class="dynamic-child"><button v-on="click: test()">Test</button></div>'
},
methods:{
addNewElement: function(){
var vmtemp = Vue.extend({
template: this.sampleElement,
methods: {
test: function(){
alert("comes from dynamically loaded content");
this.$dispatch('child-msg','this comes from ajax loaded component');
}
}
});
new vmtemp().$mount(document.getElementById('dynamicloaded'));
},
test: function(){
alert('Test');
},
events: {
'child-msg': function(msg){
console.log('message received'+msg);
}
}
}
});
私はあなたの提案に従ってフィディドを更新しましたが、動作しません。通常のコンポーネントでは、イベントシステムで正常に動作します。つまり、通常のコンポーネントがrootの子として動作することができるという証拠です。しかし、動的にマウントされた 'コンポーネント'はルートビューインスタンスの子コンポーネントとして設定できません – kidsit
申し訳ありませんが間違っていましたが、私は自分の答えを更新します。 – gurghet
それは動作しません、あなたは新しいvmtemp({親:_this})以外の他のアイデアを持っていることができます。 – kidsit