![](/img/trans.png)
[英]Is there a way to shorten defining v-model data, Vue.js and Laravel
[英]Validation error Form Request v-model Laravel vue.js
我有個問題。
我在表單上使用了表單請求,但也使用了 Vue。 我的問題是old('')
變量不能與 Vue v-model
一起使用。
這是輸入字段的示例。
<div class="form-group">
<label for="name">{{ trans('messages.name') }}</label>
<input type="text" name="name" v-model="name" id="name" value="{{ old('name') }}" class="form-control">
@if($errors->has('name'))
<span class="help">
{{trans('Validations.name')}}
</span>
@endif
</div>
如果我刪除 v-model="name" {{ old('name') }} 變量有效。
這是我在瀏覽器中從 Vue 得到的錯誤。
<input v-model="name" value="asdasdasd">:
使用 v-model 時將忽略內聯值屬性。 改為在組件的數據選項中聲明初始值。
文件
<script>
import RangeSlider from './RangeSlider.vue';
export default {
components: {
RangeSlider,
},
props: ['fields'],
data() {
return {
name: '',
email: '',
phone: '',
loading: false,
errors: {},
};
},
methods: {
onSubmit() {
this.loading = true;
}
}
};
</script>
Vue
不允許您從HTML
中初始化模型數據,因為Vue
期望您從API
中檢索數據並從Vue instance
中設置它,這在與blade
結合使用時可能會很痛苦。 解決這個問題的最簡單方法是創建一個指令來自己進行init
:
Vue.directive('init', {
bind: function(el, binding, vnode) {
vnode.context[binding.arg] = binding.value;
}
})
然后用作:
<input type="text" name="name" v-model="name" id="name" v-init:name="'{{old('name')}}'" class="form-control">
這是 JSFiddle: https ://jsfiddle.net/0uvqmodc/
您應該在v-bind的幫助下嘗試此操作,它動態綁定一個或多個屬性。
<input type="text" name="name" v-model="name" id="name" v-bind:value="old('name')" class="form-control">
但是,如果要為輸入字段設置初始值,只需將數據變量name
設置為要設置的值( old('name')
)。
HTML
<input type="text" name="name" v-model="name" id="name" class="form-control">
JS
data() {
return {
name: 'oldValue',
email: '',
phone: '',
loading: false,
errors: {},
};
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.