Задать вопрос
ExEr7um
@ExEr7um
Фронтендер

Почему не работает код, Vue.js?

Я только начал разбираться во Vue.js, поэтому не судите строго. Возникла такая проблема: не работает метод pickFont. Вот JS:
var constructorSection = new Vue({
  el: '.constructorSection',
  data: {
    sign: '',
    signStyle: {
      fontFamily: 'Montserrat, sans-serif'
    },
    FPisActive: false,
    currentFont: 'Выберите шрифт надписи'
  },
  methods: {
    pickFont: function (font) {
      fontFamily: font,
      currentFont = font,
      FPisActive = false
    }
  }
})

Вот HTML:
<input type="text" class="signInput" placeholder="Введите вашу надпись" v-model="sign">

<h4>Шрифт</h4>
<div class="fontPicker" id="fontPicker" v-bind:class="{ opened: FPisActive }" v-on:click="FPisActive = true">
    <div class="FP-Placeholder" id="FP-Placeholder" v-bind:class="{ opened: FPisActive }">
        {{ currentFont }}
        <img src="img/expandArrow.svg" alt="" style="float: right; margin-right: 15px;">
    </div>
    <div class="FP-Item" id="FP-1" v-bind:class="{ opened: FPisActive }" v-on:click="pickFont('Academia')">Academia</div>
</div>

Работает все, кроме метода. Точнее он работает частично — если я допишу в конце alert(Что-то), то оповещение он выдаст, пропустив все, что было до этого.
Как это исправить? Заранее спасибо!
  • Вопрос задан
  • 698 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
Мне кажется нужно сначала разобраться в JS
Рассмотрим Ваш метод построчно:
fontFamily: font,
// создали метку  fontFamily, которая здесь бесполезна,
// далее бесполезное обращение к переменной,
// далее оператор запятая
currentFont = font,
// тут вроде бы должны присвоить значение font в currentFont
// так как currentFont нигде не объявлено - будет ошибка
// ну и опять оператор запятая, а значит не фига в currentFont не будет font
FPisActive = false
// а будет там результат вот этого выражения, то есть false
// опять же FPisActive не объявлено - ошибка


Повангую, и предположу, что Вы хотите поменять данные, тогда нужно так:
pickFont: function (font) {
      this.signStyle.fontFamily = font;
      this.currentFont = font;
      this.FPisActive = false;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
devspec
@devspec
Помогло? Отметь решением
Не знаток Vue, тоже только учусь, но предположу, что с методом что-то не то:
pickFont: function (font) {
    return { fontFamily: font,
      currentFont: font,
      FPisActive: false
    }
}
Ответ написан
@PloAl
проблема в синтаксисе js

pickFont: function (font) {
    fontFamily = font;
    currentFont = font;
    FPisActive = false;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы