Я хочу создать простой компонент ввода в Vue,
который, если условие IsPassword
было истинным, установите его type = "password"
, а если нет, установите для него type = "text"
.
Я, вероятно, делаю ошибку где-то в синтаксисе, потому что я получаю parsing javascript error
это упрощенная версия моего кода
App.vue
import InputText from "@/components/InputText.vue";
<template>
Username : <InputText/>
Password : <InputText :isPassword = "true">
</template>
InputText.vue
<template>
<input :type = "{IsPassword ? 'password':'text'}" value = "Im getting error here">
</template>
<script>
export default {
props: {
IsPassword: Boolean
}
}
</script>
Во-первых, вы должны указать условие в фигурных скобках.
Во-вторых, синтаксис тернарного оператора должен выглядеть как condition ? if condition true : if condition false
Итак, это должно выглядеть так
<input :type = "IsPassword ? 'password' : 'text'" value = "Im getting error here">
Вероятно, вам потребуется поддерживать типы функций для входного текста.
Мое предложение состоит в том, чтобы сохранить логику вне шаблонов:
import InputText from "@/components/InputText.vue";
<template>
Username : <InputText/>
Password : <InputText is-password>
</template>
<template>
<input :type = "inputType" >
</template>
<script>
import {computed} from 'vue';
export default {
props: {
IsPassword: Boolean
},
setup(props){
const inputType = computed(() => props.IsPassword ? 'password' : 'text')
return{
inputType
}
}
}
</script>