我似乎无法从嵌入式模板将Vue数据传递到Vue组件中。
我收到此错误:
vue.min.js: Uncaught TypeError: Cannot read property 'type' of undefined
下面是我正在使用的示例代码:
Vue.component('data-item', {
props: ['food'],
template:"<li>{{food}}</li>"
})
var content = new Vue({
el: '#content',
data: {
value: 'hello value!'
}
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="content">
<!-- this works
<ol>
<li>{{value}}</li>
</ol>
-->
<!-- passing data from vue instance to component doesn't work -->
<ol>
<data-item v-bind:food="value" inline-template></data-item>
</ol>
</div>
答案 0 :(得分:6)
您正在尝试使用inline-template
,但不包括内联模板。 inline-template
用其DOM节点内的内容替换组件的template
;您得到undefined
,因为它是空的。
如果要使用内联模板:
Vue.component('data-item', {
props: ['food'],
template: "<li>This will be ignored in favor of the inline-template: {{food}}</li>"
})
var content = new Vue({
el: '#content',
data: {
value: 'hello value!'
}
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="content">
<ol>
<data-item v-bind:food="value" inline-template>
<li>I am the inline template: {{food}}</li>
</data-item>
</ol>
</div>
如果您想改用data-item
的“模板”,只需不要在元素上包含inline-template
:
Vue.component('data-item', {
props: ['food'],
template:"<li>{{food}}</li>"
})
var content = new Vue({
el: '#content',
data: {
value: 'hello value!'
}
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="content">
<ol>
<data-item v-bind:food="value"></data-item>
</ol>
</div>
答案 1 :(得分:0)
您可以使用is
属性
Vue.component('data-item', {
props: ['food'],
template:"<li>{{food}}</li>"
})
var content = new Vue({
el: '#content',
data: {
value: 'hello value!'
}
})
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="content">
<ol>
<li is="data-item" v-bind:food="value"></li>
</ol>
</div>