Показать сообщение отдельно
  #5 (permalink)  
Старый 16.06.2019, 15:50
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Сообщение от Ким чен ин Посмотреть сообщение
потому что computed это не функция, это свойство, хоть и с возможностью вычисления но все таки свойство. А свойство не может изменять сторонние переменные. Это не предусмотрено парадигмой vue. Если написать такое например в пхп шторме, он покажет ошибку, хотя и не критическую, но укажет что это косяк. Но в данно случае да, проблема не в этом.
С противоречием парадигме VUE понял избавимся от противоречия.
Перепишем обработчики в предыдущем варианте (когда компонент с инпутом) по предложенной вами схеме:
methods:{
	vtReturn:function(str){
		this.checker(str);
		this.res.valid = this.pattern.test(this.res.value);
		return this.res;
	},
	checker:function(str){
		if (str.length > this.max){
			this.res.value = str.substr(0,this.max);
		}
    }
}

Имеем то же самое, подрезка срабатывает каждый раз при попытке дописать цифр.
Проверка срабатывает через раз.
Ответить с цитированием