Сообщение от Ким чен ин
|
вообще так нельзя делать...
|
А почему так нельзя делать?
Дело-то скорее всего не в том, что обрезка завернута в computed потому что, можно например так:
<script type="text/javascript">
Vue.component('vt-input', {
data: function () {
return {
pattern: /^\+\d{11}$/g,
max:12,
res:{
valid:Boolean,
value:String
}
}
},
mounted:function(){
this.res.value = this.value.value;
},
props: {
value:{
type:Object
}
},
template: `
<div>
<input
v-model="res.value"
v-on:input="$emit(\'input\', vtReturn($event.target.value))">
</div>
`,
methods:{
vtReturn:function(str){
if (str.length > this.max){
this.res.value = str.substr(0,this.max);
}
this.res.valid = this.pattern.test(this.res.value);
return this.res;
}
}
});
</script>
</head>
<body>
<div id="app">
<vt-input v-model="inputVal"></vt-input>
</div>
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data () {
return {
inputVal:{
valid:Boolean,
value:'+12345678901'
}
}
}
});
</script>
</body>
С тем же результатом - проверкой срабатывающей через раз.