Vue использование свойств
Набросал код компонента:
const MyComponent= {
template:'<div class="movable" v-bind:style="{left: left+\'px\', top: top + \'px\', borderColor: color}">'
+ '{{text}}<br> <span class="counter">Счетчик: {{counter}} <button v-on:click="counter++">+1</button></span><br>'
+ '<button v-on:click="move(\'left\', 0)">⇐</button>'
+ '<button v-on:click="move(\'left\', 1)">⇒</button>'
+ '<button v-on:click="move(\'top\', 0)">⇑</button>'
+ '<button v-on:click="move(\'top\', 1)">⇓</button>'
+'</div>',
props:['text', 'color', 'propleft', 'proptop'],
data() {
return {
counter: 0,
left:0,
top: 0
}
},
created: function(){
this.left = this.$props.propleft;
this.top = this.$props.proptop;
},
methods: {
move: function(where, isAdd) {
let add = isAdd ? 10 : -10;
this[where] = (+this[where] + add);
console.log(this.propleft);
console.log(this.left);
//this.propleft+=10; // ошибка
}
}
};
Вот в работе Смотрю что в компоненте я не могу менять свои св-ва: //this.propleft+=10; // ошибка Поэтому исхитрился сделать как в коде выше. Следующие вопросы: 1) вот так что ли эти св-ва и понимать, не как "св-ва компонента"(св-ва объекта) а как неизменяемые данные переданные компоненту 2) инициализировать ими свои внутренние данные получается через хук created()? |
3) А наблюдение за изменениями св-в нет?
Просто если входной параметр привязываешь к переменной снаружи и хочешь отследить ее изменение, то так не работает:
watch: {
propleft: function(newVal, oldVal) {
this.left = newVal;
},
|
Цитата:
Цитата:
Цитата:
Цитата:
https://codepen.io/Malleys/pen/wvKMNRv |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
У меня тоже 2.6.11, запускаю локально.
Я смотрю что наблюдать изменение св-ва - вроде нет такого функционала. Вот странненько если честно. Забиндить какое то св-во на наружные данные, так пожалуйста: <movable-component text="Eagle" v-bind:propleft="myGlobalLeft" proptop="400" color="Blue"></movable-component> и в консоли через app.myGlobalLeft можно будет менять то что внутри у компонента, но компонент об этих изменениях не в курсе. |
Цитата:
1) Создается вычисляемое св-во следящее за входным параметром:
computed: {
forpropleft() {
return this.propleft;
}
},
2) Наблюдение делается уже за этим вычисляемым полем |
| Часовой пояс GMT +3, время: 00:39. |