vuejs 2.0.0 中 select 的占位符
placeholder for select in vuejs 2.0.0
我正在使用 vuejs 2.0 创建一个网络应用程序。我使用以下代码创建了简单的 select 输入:
<select v-model="age">
<option value="" disabled selected hidden>Select Age</option>
<option value="1"> 1 Year</option>
<option value="11"> 11 Year</option>
</select>
我在我的 Vue 组件的 data
中有这个:
data () {
return {
age: "",
}
},
watch: {
age: function (newAge) {
console.log("log here")
}
但是在为 select 添加默认值时开始出现此错误:
ERROR in ./~/vue-loader/lib/template-compiler.js?id=data-v-5cf0d7e0!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/cde.vue
template syntax error :
inline selected attributes on will be ignored when using v-model. Declare initial values in the component's data option instead.
@ ./src/components/cde.vue 10:23-151
@ ./~/babel-loader!./~/vue-loader/lib/selector.js?
type=script&index=0!./src/views/abcView.vue
@ ./src/views/abcView.vue
@ ./src/router/index.js
@ ./src/app.js
@ ./src/client-entry.js
@ multi app
我也尝试在组件的数据部分给出默认值,但没有任何反应。我也尝试了 v-bind
但观察者停止了对年龄变量的研究。
唯一需要做的就是从默认值 option
中删除 selected
:
<select v-model="age">
<option value="" disabled hidden>Select Age</option>
.....
</select>
对于可能遇到此问题的其他人,我还需要执行一个额外的步骤才能显示默认选项。在我的例子中,我绑定的 v-model
返回的是 null
而不是空字符串。这意味着一旦 Vue 绑定启动,就不会选择默认选项。
要解决这个问题,只需将默认选项的 value
属性 绑定到 null
:
<select v-model="age">
<option :value="null" disabled>Select Age</option>
...
</select>
对于占位符,您需要将 value 属性设置为与您所在州定义的初始值相同的值。
使用
更改禁用的选项
<option value="null" disabled selected hidden>Select Age</option>
并在状态下做这样的事情
data () {enter code here
return {
age: null,
}
}
以 Shivam Bisht 为基础,以防您无法访问默认值。
只需将 value="undefined" 添加到您的占位符选项标签。
占位符文本
var demo = new Vue({
el: '#demo',
data: function() {
return {
param: undefined,
};
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
<select v-model="param">
<option value="undefined" disabled>Placeholder text</option>
<option value="1">Dutch woman are beautiful.</option>
<option value="11">German Men are slow.</option>
</select>
</div>
我让它工作的唯一方法:
<select v-model="selectedTemplate" class="btn btn-default">
<option v-for="template in templates" v-bind:value="template.tasks"}{{template.name}}</option>
<option :value="this.selectedTemplate" disabled hidden>Select a template</option>
</select>
关键是禁用隐藏选项中的:value=this.selectedtemplate
。
总结其他答案,因为它们在特定条件下似乎都是正确的:
这取决于你的 v-model 变量期望的数据类型,例如,如果它期望一个整数传递 :value="null" 或 :value="undefined" 会起作用,但如果它期望一个对象,那么你需要传递 :value="{}".
//Example: data/v-model expects integer
<select v-model="param">
<option :value="undefined" disabled>Placeholder text</option>
<option value="1">1</option>
<option value="11">11</option>
</select>
//Example: data/v-model expects object
<select v-model="param">
<option :value="{}" disabled>Placeholder text</option>
<option
v-for="item in items"
:key="item.id"
:value="item"
>
{{ item.propery }}
</option>
</select>
对于字符串 null 或未定义的值应该有效,但您也可以只在数据对象中定义一个占位符。
我正在使用 vuejs 2.0 创建一个网络应用程序。我使用以下代码创建了简单的 select 输入:
<select v-model="age">
<option value="" disabled selected hidden>Select Age</option>
<option value="1"> 1 Year</option>
<option value="11"> 11 Year</option>
</select>
我在我的 Vue 组件的 data
中有这个:
data () {
return {
age: "",
}
},
watch: {
age: function (newAge) {
console.log("log here")
}
但是在为 select 添加默认值时开始出现此错误:
ERROR in ./~/vue-loader/lib/template-compiler.js?id=data-v-5cf0d7e0!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/cde.vue template syntax error : inline selected attributes on will be ignored when using v-model. Declare initial values in the component's data option instead.
@ ./src/components/cde.vue 10:23-151
@ ./~/babel-loader!./~/vue-loader/lib/selector.js? type=script&index=0!./src/views/abcView.vue @ ./src/views/abcView.vue
@ ./src/router/index.js
@ ./src/app.js
@ ./src/client-entry.js
@ multi app
我也尝试在组件的数据部分给出默认值,但没有任何反应。我也尝试了 v-bind
但观察者停止了对年龄变量的研究。
唯一需要做的就是从默认值 option
中删除 selected
:
<select v-model="age">
<option value="" disabled hidden>Select Age</option>
.....
</select>
对于可能遇到此问题的其他人,我还需要执行一个额外的步骤才能显示默认选项。在我的例子中,我绑定的 v-model
返回的是 null
而不是空字符串。这意味着一旦 Vue 绑定启动,就不会选择默认选项。
要解决这个问题,只需将默认选项的 value
属性 绑定到 null
:
<select v-model="age">
<option :value="null" disabled>Select Age</option>
...
</select>
对于占位符,您需要将 value 属性设置为与您所在州定义的初始值相同的值。
使用
更改禁用的选项<option value="null" disabled selected hidden>Select Age</option>
并在状态下做这样的事情
data () {enter code here
return {
age: null,
}
}
以 Shivam Bisht 为基础,以防您无法访问默认值。 只需将 value="undefined" 添加到您的占位符选项标签。
占位符文本
var demo = new Vue({
el: '#demo',
data: function() {
return {
param: undefined,
};
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
<select v-model="param">
<option value="undefined" disabled>Placeholder text</option>
<option value="1">Dutch woman are beautiful.</option>
<option value="11">German Men are slow.</option>
</select>
</div>
我让它工作的唯一方法:
<select v-model="selectedTemplate" class="btn btn-default">
<option v-for="template in templates" v-bind:value="template.tasks"}{{template.name}}</option>
<option :value="this.selectedTemplate" disabled hidden>Select a template</option>
</select>
关键是禁用隐藏选项中的:value=this.selectedtemplate
。
总结其他答案,因为它们在特定条件下似乎都是正确的: 这取决于你的 v-model 变量期望的数据类型,例如,如果它期望一个整数传递 :value="null" 或 :value="undefined" 会起作用,但如果它期望一个对象,那么你需要传递 :value="{}".
//Example: data/v-model expects integer
<select v-model="param">
<option :value="undefined" disabled>Placeholder text</option>
<option value="1">1</option>
<option value="11">11</option>
</select>
//Example: data/v-model expects object
<select v-model="param">
<option :value="{}" disabled>Placeholder text</option>
<option
v-for="item in items"
:key="item.id"
:value="item"
>
{{ item.propery }}
</option>
</select>
对于字符串 null 或未定义的值应该有效,但您也可以只在数据对象中定义一个占位符。