Как вызвать метод vue из слушателя bootstrap-select? - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть приложение vuex с реактивным автосохранением vuex, и я использую bootstrap-select в качестве одного из полей для автоматического сохранения.

Я объявляю прослушиватель bootstrap-select в хуке жизненного цикла компонента vue mount () следующим образом:

mounted() {  //vue mounted hook
    const selectpicker = $(this.$el).find('.selectpicker')

    selectpicker.selectpicker('val', this.selected);  //this shows previously saved 'selected' items

    function callback() {
      this.callVueComponentMethod()  //throws 'this.* is not a function'
    }

    selectpicker.selectpicker().on('changed.bs.select', callback()); 
}

Я объявляю его в смонтированном хуке, так как я заставил его работатьлучше всего ... но теперь я хочу попробовать $emit функцию родительского компонента vue, когда выбор изменяется при начальной загрузке, так что мне нужно каким-то образом получить доступ к объекту this в слушателе начальной загрузки, чтобы вызвать$ выбрасывает цепочку, чтобы в конечном итоге сохранить изменения выбора.

Я мог что-то упустить, но я чувствую, что проблема в том, что объект this попадает в область прослушивания selectpicker?

Цени любой совет !! спасибо:)

1 Ответ

1 голос
/ 02 ноября 2019

Используйте функцию стрелки, которая решает проблему this.

let callback = () => {
  this.callVueComponentMethod();
}

Чтобы узнать больше о this, вы можете прочитать this.

...