【问题标题】:How to change vue data from outside?如何从外部更改 vue 数据?
【发布时间】:2020-05-21 19:03:09
【问题描述】:

我在export default 对象之外有一个函数。如何让停止按钮在 1 秒后变为播放按钮?

简而言之:我想将playingStatus 更改为超出范围的false


请查看{N} PlayGround link for question


<template>
    <Page>
        <ActionBar title="Home" />
        <ScrollView>
            <StackLayout>
                <Image v-show="!playingStatus" @tap="startFunc"
                    src="https://cdn3.iconfinder.com/data/icons/iconic-1/32/play_alt-512.png"
                    stretch="aspectFit" />
                <Image v-show="playingStatus"
                    src="https://cdn3.iconfinder.com/data/icons/eightyshades/512/24_Stop-512.png"
                    stretch="aspectFit" />
            </StackLayout>
        </ScrollView>
    </Page>
</template>

<script>
    function playForAWhile() {
        setTimeout(stop, 1000);
    }

    function stop() {
        playingStatus =
        false; // scope error... How to change vue data from outside?
    }

    export default {
        data() {
            return {
                playingStatus: false
            };
        },
        methods: {
            startFunc() {
                this.playingStatus = true;
                playForAWhile();
            }
        }
    };
</script>

<style scoped>
</style>

或者,我如何在没有 vue 对象的情况下切换图像,而不是从外部更改变量。 提前致谢。

【问题讨论】:

  • 配合这个组件的一个方法的函数。这样你就可以操纵它的数据;)
  • 你的意思是'''stop'''函数吗?
  • 是的,为什么您需要在组件之外使用它?你想达到什么目标?
  • 现在 Stop 没有定义。 play.nativescript.org/?template=play-vue&id=SLVQeY&v=9我认为vue对象和脚本部分之间一定有一种桥梁。
  • Method.call(this: vue, ...arcs)

标签: vue.js vuejs2 nativescript-vue


【解决方案1】:

您根本不应该尝试从外部更改数据。您可以仅使用组件方法来实现您的目标,例如:

export default {
  data() {
    return {
      playingStatus: false
    };
  },
  methods: {
    playForAWhile() {  // execute this on tap
      this.playingStatus = true;

      // rest of the playing code

      setTimeout(() => {
        this.playingStatus = false;
      }, 1000);
    }
  }
};

【讨论】:

  • playForAWhile 函数象征着超过 4000 行代码。 Vue 只负责播放和停止按钮。按钮是软件中唯一的反应部分。
  • 哦,这又是不同的东西......:D
  • 好的,所以你想从这个组件外部控制按钮的外观,那么传递一个 playingStatus 属性怎么样?
  • 如何在同一个文件中传递道具?
  • 所以你最后在同一个文件中有这个。那你为什么不把playForAWhile 做成一个组件方法呢?这样它可以改变组件的状态。
猜你喜欢
  • 1970-01-01
  • 2023-02-19
  • 2019-01-19
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多