ListView.setClickable()不起作用。 (Nativescript-Vue)

时间:2019-05-15 10:08:27

标签: javascript listview nativescript nativescript-vue nativescript-telerik-ui

我正在编写Nativescript-Vue应用。

我有一个组件,其中有两个子组件。 因此,当我点击第二个按钮时,我需要禁用滚动第一个按钮的ListView。

因此,我通过“ ref =“取得了ListView元素,并将其放入了商店(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 个答案:

答案 0 :(得分: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>

显然此代码不正确。