Vue.js 父级v-if中的Vue子级=";假;韩元';无法执行,但除了在具有默认插槽的模式包装器内,为什么?
请看这个最小的例子 1. 此最小模板不会引发任何错误,因为父级未呈现任何内容Vue.js 父级v-if中的Vue子级=";假;韩元';无法执行,但除了在具有默认插槽的模式包装器内,为什么?,vue.js,vuejs2,Vue.js,Vuejs2,请看这个最小的例子 1. 此最小模板不会引发任何错误,因为父级未呈现任何内容 {{i.dont.have.the.value} 2. 现在,如果我使用默认插槽创建一个模式包装器,并且仍然使用v-if Modal.vue 导出默认值{ 道具:{ 显示:布尔, }, }; 但是,这会抛出错误,为什么 App.vue {{i.dont.have.the.value} 从“@/components/Modal.vue”导入模态; 导出默认值{ 组成部分:{ 情态动词 }, }; [Vue w
{{i.dont.have.the.value}
2.
现在,如果我使用默认插槽创建一个模式包装器,并且仍然使用v-if
Modal.vue
导出默认值{
道具:{
显示:布尔,
},
};
但是,这会抛出错误,为什么
App.vue
{{i.dont.have.the.value}
从“@/components/Modal.vue”导入模态;
导出默认值{
组成部分:{
情态动词
},
};
[Vue warn]:呈现错误:“TypeError:无法读取未定义的属性'dont'”
为什么会这样
我怎样才能创建一个模式,保证孩子们不会被执行,如果不显示
我无法在模式组件中直接使用
v-if
,因为我需要转换。您在App.vue
中的插槽上犯了一个错误,因为VueJS将尝试根据父范围解析您的I.not.have.value
变量(您的插槽没有条件)
记住官方文件中的这条规则
Everything in the parent template is compiled in parent scope; everything in the child template is compiled in the child scope.
只需在正确的范围内定义变量,就可以了(如果在子组件中定义变量,并希望将其公开给父组件,则使用一个有范围的插槽)