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, время: 18:46. |