如何更改VueJS上的另一个组件数据

时间:2017-12-28 20:39:59

标签: javascript vue.js vue-component

我有一个像这样的经典Vue组件

Vue.component('bar', {
    template: `<div class="bar"></div>`,
    data () {
        return {
            blocks: [
            ]
        }
    }
});

我也有这样的Vue Instance。

new Vue ({
  el: '#app',
  data: {
    value: 1
  },
  methods: {
    add: function() {
        // here to do
    }
  }
});

当添加函数工作时,我必须添加数据组件块值。我无法使用Vuex以及其他解决方案是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用称为“事件总线”的方式

https://alligator.io/vuejs/global-event-bus/

或者您可以创建自己的状态管理

https://vuejs.org/v2/guide/state-management.html#Simple-State-Management-from-Scratch

但我强烈建议你也使用vuex,因为当项目增长时,很难管理事件和状态

答案 1 :(得分:0)

因为这是父母 - &gt;孩子沟通,你可以简单地使用props:

  • blocks存储在父组件上。
  • blocks作为道具传递给bar组件。
  • 使用computed properties.
  • 进行任何其他处理
  • 使用子模板显示数据。

以下是一些指导:

  1. 使用props定义组件:

    Vue.component('bar', {
        template: `<div class="bar">{{blocks.length}}</div>`,
        props: ['blocks']
    });
    
  2. 在父级上定义blocks(在您的示例中,主要的vue组件):

    new Vue ({
        el: '#app',
        data: {
            blocks: []
        },
        methods: {
            add: function() {
                // do something with blocks
            }
        }
    });
    
  3. 将数据传递给组件:

    <bar :blocks="blocks"></bar>