用于动态选项的计算getter和setter

时间:2016-12-08 06:47:18

标签: javascript vue.js vuex

我将Vuex与我的Vue组件一起使用。当我的组件具有可编辑的静态字段时,可以使用计算属性轻松处理它们:

computed: {
  text: {
    get() {
      return ...
    },
    set(value) {
      this.$store.commit...
    },
  },
},

<input type="text" v-model="text">

但是,当我渲染需要绑定的选项列表时,应该怎么做?

options = [
  {
    value: ...,
    text: ...,
  },
  {
    value: ...,
    text: ...,
  },
  ...
];

<input type="text" v-model="option.text" v-for="option in options">

2 个答案:

答案 0 :(得分:1)

您必须为选项定义突变,例如&#34; addOption&#34;,&#34; editOption&#34;等...

比任选(但推荐)定义选项组件。绑定事件来调用突变。

这里提供了一个由vuex提供的简单示例: https://github.com/vuejs/vuex/tree/dev/examples/todomvc

特别要看todo组件。它负责todo列表中的单个项目。 https://github.com/vuejs/vuex/blob/dev/examples/todomvc/components/Todo.vue

以及它们如何使用应用组件中的列表。 https://github.com/vuejs/vuex/blob/dev/examples/todomvc/components/App.vue

这些是他们的突变。了解他们如何编辑,添加和删除列表项。 https://github.com/vuejs/vuex/blob/dev/examples/todomvc/store/mutations.js

我无法得到更短的答案,转向vuex(vue + redux方法论)需要改变思维和架构。

答案 1 :(得分:-1)

您可以在vue实例中将这些选项建模为data,并按照您的提及在HTML中使用它们。

var vm = new Vue({
  data: {
     options: [
       {
         value: ...,
         text: ...,
       },
       {
         value: ...,
         text: ...,
       },
       ... 
     ]
  }
})

在HTML中:

<input type="text" v-model="option.text" key="option.value" v-for="option in options">

我还添加了key属性以及v-for,以便它可以跟踪每个节点的标识,从而重用和重新排序现有元素,您需要为每个项目提供唯一的键属性。 key的理想值是每个项目的唯一ID。