Di VueJS kita dapat menambah atau menghapus elemen DOM menggunakan v-if:
<button v-if="isRequired">Important Button</button>
tetapi adakah cara untuk menambah / menghapus atribut dari elemen dom misalnya untuk menetapkan atribut yang diperlukan berikut ini secara bersyarat:
Username: <input type="text" name="username" required>
dengan sesuatu yang mirip dengan:
Username: <input type="text" name="username" v-if="name.required" required>
Ada ide?
javascript
vue.js
vuejs2
Don Smythe
sumber
sumber
null
,undefined
ataufalse
” , yang berbeda dari script JS mengevaluasi ke false. Ini berarti string kosong salah dalam JavaScript, tetapi masih akan menambahkan atribut ke DOM. Untuk mencegahnya, Anda dapat mencobav-bind:name="name || false"
false
ke komponen anak melalui prop?'false'
. Dalam kasus lain ketika Anda perlu mengontrol keberadaan atribut html non-boolean pada elemen, Anda dapat menggunakan rendering bersyarat denganv-if
seperti yang disarankan di sini: github.com/vuejs/vue/issues/7552#issuecomment-361395234attribute
tetapi TIDAKprop
. Kita dapat dengan aman mengirimkan eksplisitfalse
melalui properti komponen tetapi TIDAK (yang tidak dikenali sebagai properti). Apakah saya benar?Jawaban:
Mencoba:
sumber
<input v-bind:required="test ? true : false">
anythingAtAll : ? true : false
(atauif (condition) { return true; } else { return false; }
) dalam bahasa apa pun ... tidak pantas . Cukup gunakanreturn (condition)
atau, dalam hal ini,<input :required="test">
test
adalahboolean
, Anda hanya dapat menggunakan:required="test"
String
nilai dengan menyetelnya kefalse
Anda akan mendapatkantype check
kesalahan. Jadi setel keundefined
sebagai ganti false. docs:required="required"
manarequired
properti komponen Boolean menghasilkan <el required = "required"> untuk sayaBentuk paling sederhana:
sumber
String
nilai dengan menyetelnya kefalse
Anda akan mendapatkantype check
kesalahan. Jadi setel keundefined
sebagai ganti false. docs!!
Saya belum pernah melihat sintaks itu sebelum kemarin dan selama peninjauan kode saya menemukan ini: -<input :required="!!!recipe.checked" v-model="recipe.pieType"><select :required="!!!recipe.checked" v-model="recipe.ingredients" :options="ingredients"></select>
Apakah Anda tahu apa arti!!!
(3) untuk suatu:required
nilai? Terima kasih.<input :required="condition">
Anda tidak perlu
<input :required="test ? true : false">
karena jika tes adalah truthy Anda sudah mendapatkanrequired
atribut, dan jika tes adalah falsy Anda tidak akan mendapatkan atribut. Thetrue : false
Bagian berlebihan, seperti ini ...Maka, cara paling sederhana untuk melakukan pengikatan ini adalah
<input :required="condition">
Hanya jika tes (atau kondisi ) dapat disalahartikan, Anda perlu melakukan sesuatu yang lain; dalam hal ini, penggunaan Syed akan berhasil
!!
.<input :required="!!condition">
sumber
Anda bisa melewatkannya
boolean
dengan memaksakannya, letakkan di!!
depan variabel.Tetapi saya ingin menarik perhatian Anda untuk kasus berikut di mana komponen penerima telah ditentukan
type
untuk props. Dalam hal ini, jikaisRequired
telah ditentukan tipe untuk menjadistring
maka melewatiboolean
pemeriksaan tipe membuatnya gagal dan Anda akan mendapatkan peringatan Vue. Untuk memperbaikinya Anda mungkin ingin menghindari melewatkan prop itu, jadi letakkan sajaundefined
fallback dan prop tidak akan dikirim kecomponent
Penjelasan
Saya telah melalui masalah yang sama, dan mencoba solusi di atas !! Ya, saya tidak melihat
prop
tetapi itu sebenarnya tidak memenuhi apa yang diminta di sini.Masalahku -
Dalam kasus di atas, apa yang saya harapkan adalah tidak
my-prop
diteruskan ke komponen anak -<any-conponent/>
Saya tidak melihat bagianprop
dalamDOM
tetapi Dalam<any-component/>
komponen saya , kesalahan muncul dari kegagalan pemeriksaan tipe prop. Seperti pada komponen anak, saya mengharapkanmy-prop
menjadiString
tetapi sebenarnyaboolean
.Yang berarti bahwa komponen anak menerima prop meskipun itu
false
. Tweak di sini adalah membiarkan komponen anak mengambildefault-value
dan juga melewati pemeriksaan. Lulusundefined
bekerja!Ini berfungsi dan prop anak saya memiliki nilai default.
sumber
Dalam penggunaan html
Dan tentukan dalam properti data seperti
sumber