Vue JS настройка сбора данных в компоненте - PullRequest
0 голосов
/ 31 августа 2018

Я хочу сделать мой код короче. У меня есть график JS, который использует datacollection, чтобы установить параметры для графика. Я хочу сделать это в другом компоненте при использовании его на моих страницах.

Я хочу иметь возможность настроить сбор данных det из компонента render, основываясь на том, какую диаграмму я хочу.

У меня есть что-то вроде этого в моем компоненте:

<template>
   <div>
     <chart :datacollection="this_will_i_define_on_the_page_i_render_this_component"> </chart>
   </div>
<template>

<script> 
  export {
    name: 'this-chart',
    data () { 
      return {
       DC1: []
       DC2: []
      }
    }
 }
 (basic vue component)
</script>


<template>
  <this-chart :datacollection="DC1"> </this-chart>
  <this-chart :datacollection="DC2"> </this-chart>
</template>

Итак, я хочу иметь возможность перейти в свой компонент и установить datacollection. Как я могу это сделать?

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

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Тогда, основываясь на вашем комментарии, вы можете что-то вроде этого. Вероятно, более элегантный способ, но должен работать.

<template>
    <div>
        <chart :data-collection="myChartData"></chart>
    </div>
</template>

<script>
export default {
  name: "this-chart",
  props: {
    activeDataSet: {
      type: String,
      required: true,
      validator: value => ["a", "b", "c"].indexOf(value) > -1
    }
  },
  computed: {
    myChartData() {
      const example1 = [{ x: 1, y: 2 }, { x: 2, y: 3 },{ x: 3 y: 4 }];
      const example2 = [{ x: 1, y: 2 }, { x: 2, y: 3 },{ x: 3 y: 4 }];
      const example3 = [{ x: 1, y: 2 }, { x: 2, y: 3 },{ x: 3 y: 4 }];
      if(this.activeDataSet === 'a') return example1
      if(this.activeDataSet === 'b') return example2
      if(this.activeDataSet === 'c') return example3
    }
  }
};
</script>

и затем использовать

<template>
    <this-chart activeDataSet="a"></this-chart>
</template>
0 голосов
/ 31 августа 2018

Я думаю, что вы ищете компонент реквизита .

<template>
    <div>
        <chart :data-collection="myChartData"></chart>
    </div>
</template>

<script>
export default {
  name: "this-chart",
  props: {
    myChartData: {
      type: Array,
      required: true
    }
  }
};
</script>

и использовать его

<template>
    <this-chart :my-chart-data="exampleData"></this-chart>
</template>

<script>
export default {
  name: "example-component",
  data() {
    return {
      exampleData: [{ x: 5, y: 10 }, { x: 6, y: 11 }]
    };
  }
};
</script>

Пожалуйста, форматируйте ваш код лучше в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...