ListView.setClickable() не работает. (Нативный скрипт-Vue)

Я пишу приложение Nativescript-Vue.

У меня есть компонент с двумя дочерними компонентами. Поэтому, когда я нажимаю кнопку, расположенную во втором, мне нужно отключить прокрутку ListView, размещенного в первом.

Поэтому я взял свой элемент ListView через "ref=" и поместил его в хранилище (Vuex)

<ListView ref = "listViewEl" ></ListView>
...
mounted() {
    store.commit('putElInStore', this.$refs.listViewEl)
}

...

putElInStore(state, element) {
    state.listViewEl = element
}

Мне нужно отключить прокрутку ListView, когда я нажимаю кнопку во втором дочернем компоненте. Поэтому я делаю это с помощью store.commit:

<Button @tap = "disableListViewScrolling"></Button>
...
disableListViewScrolling() {
    store.commit('disableScrolling')
}

...

disableScrolling(state) {
    state.listViewEl.nativeView.android.setClickable(false)
}

Так что никаких ошибок в этом случае я не получаю, но вообще никакой реакции. Это просто не работает.

Я также пытался использовать setEnabled(false) вместо. Работает, но некорректно.

Что мне не хватает? Где моя ошибка?

Заранее спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не должно быть необходимости хранить элемент в Vuex. Без полного кода я дам вам общую схему того, как это можно сделать.

<Parent>
    <childOne ref = "listViewChild"></childOne>
    <childTwo @disableButtonTapped = "$refs.listViewChild.disableClick()"></childTwo>
</Parent>
<childOne> 
   <ListView ref = "list"></ListView>
</childOne>

<script>
export defaults {
  methods: {
    disableClick () {
      this.$refs.list.nativeView.android.setClickable(false)
    }
  }
}
</script>
<childTwo> 
   <Button @tap = "$emit('disableButtonTapped')"></Button>
</childTwo>

Очевидно, что этот код не точен.

В связи с этим вы также можете использовать :isUserInteractionDisabled = "someProp", если вам нужно полностью отключить взаимодействие. затем вы управляете состоянием взаимодействия из реквизита, а не переключаете его через ссылку.

Shawn Pacarar 15.05.2019 20:33

Другие вопросы по теме