在VueJS中,我们可以使用v-if添加或删除DOM元素:

<button v-if="isRequired">Important Button</button>

但是是否有一种方法可以添加/删除dom元素的属性,例如下面的条件设置所需的属性:

Username: <input type="text" name="username" required>

通过类似于:

Username: <input type="text" name="username" v-if="name.required" required>

什么好主意吗?


当前回答

值得注意的是,如果你想有条件地添加属性,你也可以添加一个动态声明:

<input v-bind="attrs" />

其中attrs被声明为一个对象:

data() {
    return {
        attrs: {
            required: true,
            type: "text"
        }
    }
}

这将导致:

<input required type="text"/>

适用于具有多个属性的情况。

其他回答

<输入:要求= "条件" >

你不需要<input:required="test ?因为如果test为真,你就已经得到了所需的属性,如果test为假,你就不会得到属性。真假部分是多余的,就像这样……

if (condition) {
    return true;
} else {
    return false;
}
// or this...
return condition ? true : false;
// can *always* be replaced by...
return (condition); // parentheses generally not needed

执行此绑定的最简单方法是<input:required="condition">

只有当测试(或条件)可能被误解时,您才需要做其他事情;在这种情况下,Syed使用!!很管用。 <所需输入:= " ! !条件”>

你可以在属性前添加冒号(也可以使用条件)

<div :class="current? 'active': '' " > 
<button :disabled="InvalidForm? true : false " >

如果你想设置一个动态值,比如props,那么你也可以在属性名前使用冒号,比如:

<Child :data="userList" />

值得注意的是,如果你想有条件地添加属性,你也可以添加一个动态声明:

<input v-bind="attrs" />

其中attrs被声明为一个对象:

data() {
    return {
        attrs: {
            required: true,
            type: "text"
        }
    }
}

这将导致:

<input required type="text"/>

适用于具有多个属性的情况。

最简单的形式:

<input :required="test">   // if true
<input :required="!test">  // if false
<input :required="!!test"> // test ? true : false

Try:

<input :required="test ? true : false">

更新:Vue 3已经改变了,请参阅这个答案https://stackoverflow.com/a/64598898