Сообщение от Aetae
|
С точки зрения парадигмы всё сказали.
А теперь с технической точки зрения: computed не вычисляется каждый раз. В vue хитрая система кэширования. Если vue считает, что ничего не поменялось - оно вернёт последнее значение.
Также все свойства в data на самом деле (для реактивности) заменяются на геттеры с сеттерами, а потому this.v = 'что-то' - это не прямое назначение, а вызов vue логики. Соответственно может что-то поломаться и на этом этапе от неправильного подхода.
Короче, вместо хаков делайте по человечески и будет вам счастье.)
|
Отличный совет. Покажите пожалуйста как по человечески?
Отойдем немного от логики VUE и перепишем метод vtReturn из примера с компонентом:
vtReturn:function(str){
var res={
valid:Boolean,
value:''
};
if (str.length > this.max){
str = str.substr(0,this.max);
}
res.valid = this.pattern.test(str);
res.value = str;
this.res = res;
return res;
}
Теперь он в принципе не берет ничего из data для изменения, только пишет туда уже измененное.
С тем же результатом как и раньше.
Я же спрашиваю и прошу пояснений не от того, что я сверхмастер JS, а совсем наоборот.