ListView.setClickable () не работает. (Nativescript-Вью) - PullRequest
0 голосов
/ 15 мая 2019

Я пишу приложение 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) вместо.Это работает, но неправильно.

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

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

1 Ответ

1 голос
/ 15 мая 2019

Не должно быть необходимости хранить элемент в 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>

Очевидно, этот код не является точным.

...