【发布时间】:2021-10-06 16:53:28
【问题描述】:
我有一个我正在使用的基本输入组件,它具有type 作为属性,并且到目前为止一直运行良好。但是,尝试将其用于密码并实施混淆有点棘手。
如何在不改变道具的情况下切换密码的隐藏/显示?我认为将type = 'password' 改为type = 'text 是最好的方法,但显然不是。
我已经创建了一个Codesandbox 来复制该组件的那一部分,但我们将不胜感激任何建议或指导!
密码输入.vue:
<template>
<div>
<input :type="type" />
<button @click="obfuscateToggle" class="ml-auto pl-sm _eye">
<div>
<img :src="`/${eyeSvg}.svg`" alt="" />
</div>
</button>
</div>
</template>
<script>
export default {
name: "HelloWorld",
data() {
return {
passwordVisible: false,
eyeSvg: "eye-closed",
};
},
props: {
type: { type: String, default: "text" },
},
methods: {
obfuscateToggle() {
if (this.eyeSvg === "eye-closed") {
this.eyeSvg = "eye";
} else this.eyeSvg = "eye-closed";
// this.eyeSvg = "eye-closed" ? "" : (this.eyeSvg = "eye");
if ((this.type = "password")) {
this.type = "text";
} else this.type = "password";
},
},
};
</script>
App.vue
<template>
<div id="app">
<PasswordInput type="password" />
</div>
</template>
【问题讨论】:
标签: vue.js passwords obfuscation vue-props