【发布时间】:2018-04-24 18:43:44
【问题描述】:
我正在构建一个自动完成功能基本上,我不想像这样绑定元素:
v-model="input"
使用 v-model 或 v-bind 绑定元素,给我的输入元素一个空白值。
相反,我希望我的元素能够从数据库中获取旧值或值,如下面的代码所示。在页面从数据库加载所有这些数据后,我只想将元素的值绑定到名为“input”的变量。下面的代码效果很好,但我必须使用 document.getElementById 来用新值更新我的元素。
<div id="spvs" class="uk-form-controls">
<input v-on:input="input = $event.target.value" v-on:keyup="getCompanies" name="company" id="company" class="uk-input {{$errors->has('company') ? ' uk-form-danger' : ''}}" placeholder="company name"
value="{{ old('company') || $errors->has('company')
? old('company')
: $property->getCompanyName()
}}">
<div v-if="spvs.length > 0" class="tm-autocomplete-box">
<ul class="uk-list uk-list-striped tm-autocomplete-list">
<li v-for="(spv, key) in spvs" @click="complete(key)"><span uk-icon="plus-circle" class="uk-margin-right"></span> @{{ spv.name }}</li>
</ul>
</div>
</div>
理想情况下,当用户单击自动完成项之一时,我会将元素值绑定到我的“输入”变量。它运行一个名为“完成”的函数。
methods:{
complete: function(key){
this.input = this.spvs[key].name;
document.getElementById('company').value = this.input;
this.spvs = '';
},
所以这是我想用新绑定替换的行:
document.getElementById('company').value = this.input;
【问题讨论】:
-
Binding on the element with the v-model or v-bind, gives my input element a blank value.我没有看到您的代码处理空白值。如果你不喜欢空白,你可以设置一个你喜欢的默认值。 -
@Sphinx 谢谢,但是默认值不起作用。我需要检测我的旧(数据)或我的数据库数据,这些数据是动态的,因为它从数据库或旧的(失败的)“发布”请求中提取。上面的代码可以完美运行,但是我只想在那一刻绑定元素,而不是'document.getElementById)。
-
在这种情况下,好的做法是显示加载动画并在此期间停用输入元素。
标签: javascript laravel-5 vue.js