javascript - 如果传递了 Function 道具,VueJS 2 会显示一些 HTML
问题描述
问题
在 VueJS 2 中,如果将 Function 属性传递给组件,如何显示一些 HTML。
例子
<template>
<div v-if="backBtn" @click="$emit('backBtn')">Back Button</div>
</template>
<script>
export default {
props: {
backBtn: Function
}
}
</script>
我可以通过传递一个单独的道具来关闭 v-if 来做到这一点,但我正在尝试通过一个道具来做到这一点。
我在这里为这个问题创建了一个小提琴
解决方案
那应该工作,
您可以添加更多定义!== undefined
<template>
<div v-if="backBtn !== undefined" @click="$emit('backBtn')">Back Button</div>
</template>
<script>
export default {
props: {
backBtn: {
type: Function,
},
}
}
</script>
但如前所述,这应该已经有效,所以你的错误可能在其他地方。
看到你的代码后,我明白了问题所在。这是一个案例问题
使用:back-btn
而不是:backBtn
仅当您仅使用 vue 运行时(没有编译)时才会发生这种情况
在这里阅读更多: https ://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only
您也可以通过仅传递函数来解决它
https://jsfiddle.net/rz6hyd7b/7/
Vue.component('my-btn', {
props: {
backbtn: {
type: Function
}
},
template: `
<div>
<div v-if="backbtn" @click="backbtn">Back Button</div>
</div>
`
})
var vm = new Vue({
el: '#app',
components: 'my-btn',
methods: {
btnClicked: function(){
console.log('adsf')
}
},
template: `
<div>
Show Btn => <my-btn :backbtn="btnClicked"></my-btn>
</br>
Hidden Btn => <my-btn></my-btn>
</div>
`
});
推荐阅读
- javascript - 向站点添加了一些代码,它可以正常工作,但似乎无限滚动到页脚之外
- php - 使用 POSTMAN 测试 Laravel API 路由
- c# - 如何在 C# 中使用 Process.Start 传递 argv[0]
- c# - 具有相同类和相同类列表的 C# 泛型
- rust - 如何在 Rust 中获取进位标志的值
- jquery - 从远程 url 使用 JSON 创建 Dyantable
- firebase - 列表的 MapView.Markers 未在渲染时显示
- kubernetes - 在 Kubernetes 集群中运行的服务之间的 JWT 身份验证
- php - php读取文件夹中的.txt文件,然后计算换行符
- python - ImportError: libcublas.so.9.0 for tensorflow in jupyter notebook