Мне нужна помощь, поскольку я потратил неделю, пытаясь найти решение, которое кажется очень простым делом в обычном режиме, но я просто изо всех сил.
У меня есть вход, которыйкомпонент и отображается в главном представлении следующим образом:
<slug v-model="slug" ></slug>
Затем у меня есть представление компонента, как показано ниже:
<template>
<v-text-field box label="Slug*" v-model="slug" @change="strtoslug" :rules="requiredRule"></v-text-field>
</template>
Я запускаю вычисленный метод для получения и установкиdata и может console.log без проблем.
В состоянии редактирования я не могу заполнить v-модель обновленным вычисленным состоянием, поскольку я не могу декальрировать как источник данных при рендеринге.
Вот весь мой блок кода.
<script>
//Set the params
export default {
name:'slug',
props: ['value'],
//Set the data
data() {
const self = this;
return {
slugstr: '',
requiredRule: [
(v) => !!v || 'Field is required',
],
}
},
watch: {
},
//Get the value onchange computer to return from component
computed: {
slug: {
get() {
return this.value;
},
set(val) {
//set the slug
this.slugstr = val;
this.slug = val;
//send data back to parent
this.$emit('input',val)
return this.value;
}
}
},
mounted() {
const self = this;
//Set the templates get request
},
methods: {
strtoslug: function(value){
this.slug = this.sanitizeSlug(value);
},
sanitizeSlug: function(title) {
var slug = "";
// Change to lower case
var titleLower = title.toLowerCase();
// Letter "e"
slug = titleLower.replace(/e|é|è|ẽ|ẻ|ẹ|ê|ế|ề|ễ|ể|ệ/gi, 'e');
// Letter "a"
slug = slug.replace(/a|á|à|ã|ả|ạ|ă|ắ|ằ|ẵ|ẳ|ặ|â|ấ|ầ|ẫ|ẩ|ậ/gi, 'a');
// Letter "o"
slug = slug.replace(/o|ó|ò|õ|ỏ|ọ|ô|ố|ồ|ỗ|ổ|ộ|ơ|ớ|ờ|ỡ|ở|ợ/gi, 'o');
// Letter "u"
slug = slug.replace(/u|ú|ù|ũ|ủ|ụ|ư|ứ|ừ|ữ|ử|ự/gi, 'u');
// Letter "d"
slug = slug.replace(/đ/gi, 'd');
// Trim the last whitespace
slug = slug.replace(/\s*$/g, '');
// Remove Punctuation
slug = slug.replace(/[.,\/#!$%\^&\*;:{}=\`~()]/g,"");
// Change whitespace to "-"
slug = slug.replace(/\s+/g, '-');
//Return the formatted str
return slug;
}
}
}
</script>
onchange происходит в console.log, но я просто не могу заставить его отрисовывать входные данные как значение, ПОЖАЛУЙСТА, что япоступаю неправильно.
С уважением
Пол