vue.js - 如何从 vue 中的数据部分创建按钮
问题描述
我正在使用 vuejs 并希望创建一个在数据部分中声明的可点击按钮。我怎样才能做到这一点?
<template>
{{my_btn}}
</template>
<script>
export default {
data() {
return {
my_btn: '<button class="btn btn-indigo outline" @click="sayhello">VISIT OUR WEBSITE</button>'
}
},
methods: {
sayhello(){
alert('hello');
}
}
}
</script>
解决方案
这是在方法中创建按钮的data
方法,但要将其显示为 HTML 而不是字符串,您需要将其添加到v-html属性中。注意:内容是作为纯 HTML 插入的——它们不会被编译为 Vue 模板,所以你应该在 mounted
Lifecycle 中添加事件监听器。注意:我添加id
到您的文本中,因此我将能够获取元素并添加事件侦听器
<template>
<div>
<span v-html="my_btn"></span>
</div>
</template>
<script>
export default {
data() {
return {
my_btn:
'<button id="btn" class="btn btn-indigo outline">VISIT OUR WEBSITE </button>'
};
},
methods: {
sayhello() {
alert("hello");
}
},
mounted() {
document.getElementById("btn").addEventListener("click", this.sayhello)
}
};
</script>
最后,您可以通过vue
避免在您的网站上呈现任意 HTML 的风险来做到这一点,因为它可能非常危险,很容易导致XSS attacks
.
<template>
<div>
<button class="btn btn-indigo outline" @click="sayhello">VISIT OUR WEBSITE
</button>
</div>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
sayhello(){
alert('hello');
}
}
}
</script>
我希望你能找到它。
推荐阅读
- ruby-on-rails - ruby on rails 在 onclick 内创建循环
- javascript - Jquery复选框勾选逻辑
- android - Android Studio RecyclerView androidx.constraintlayout.widget.ConstraintLayout 无法强制转换为 android.widget.TextView
- reactjs - React/Redux:为什么博客应用程序不删除项目?
- json - SQL 编译错误:从 S3 复制到 Snowflake 时,JSON 文件格式只能生成一列类型变量或对象或数组
- python - 通过python的数字图像处理错误
- matomo - Matomo,所有子文件夹中页面的聚合统计信息
- python - 如何确定某个数字的分子和幂?
- java - 给定磁盘上 jar 文件的路径,它的 URI 在什么时候定义为 jar:file:?这是我必须自己做的事情吗?
- python - 通过类型提示表达参数和返回类型之间的关系