在以下代码中,当父级的模板为text/x-template
时,如下所示,则子级组件(在父级内部)得到渲染:
<script type="text/x-template id="#list">
<div class="wrapper">
<p>{{firstName}} -
<button @click="changeFirstName">Change</button>
</p>
<LastNameCmp></LastNameCmp>
</div>
</script>
但是,如下所示,如果父模板是从html派生的,则子组件不会被渲染。为什么会发生这种情况?
模板
<div id="app">
<div class="wrapper">
<p>{{firstName}} -
<button @click="changeFirstName">Change</button>
</p>
<LastNameCmp></LastNameCmp>
</div>
</div>
<script type="text/x-template" id="item">
<div><p>{{lastName}} - <button @click="changeLastName">Change</button></p></div>
</script>
VueJS
var LastNameCmp = {
template: '#item',
data() {
return {
lastName: 'Sharma'
}
},
methods: {
changeLastName: function() {
this.lastName = 'Abrahim'
}
}
}
new Vue({
el: '#app',
components: {
LastNameCmp
},
data: {
firstName: 'Rajat'
},
methods: {
changeFirstName: function() {
this.firstName = 'John'
}
}
})
谢谢。
答案 0 :(得分:0)
尝试将LastNameCmp
更改为last-name-cmp
或lastnamecmp
在您的模板中
<lastnamecmp></lastnamecmp>
+ 在Vue实例中
components: {
'lastnamecmp': LastNameCmp
}