javascript - Vue 将一个对象作为计算属性展开

标签 javascript vue.js ecmascript-6 vue-cli spread-syntax

我的组件中有一个名为 config 的对象数组和一个 currentIdx 属性。然后我发现自己需要这样做:

computed: {
    textStyle: function() {
        return this.config[this.currentIdx].textStyle;
    },
    text: function() {
        return this.config[this.currentIdx].text;
    },
    key: function() {
        return this.config[this.currentIdx].key;
    }
}

我尝试将所有函数替换为:

computed: {
    ...this.config[this.currentIdx]
}

编译通过了,但是浏览器控制台报错。我认为问题在于 computed 需要函数,但扩展语法 (...) 返回对象。所以,我的问题是:在这种情况下有没有办法减少重复?

谢谢!

最佳答案

计算值可以返回对象,它们只需要由函数返回即可。如果这不是您想要的,请告诉我,我会尽力提供帮助!

let vm = new Vue({
  el : "#root",
  data : {
    current : 0,
    arrs : [
      {
        color : "background-color: blue;",
        text : "Dabodee Dabodai"
      },
      {
        color : "background-color: red;",
        text : "Angry"
      },
      {
        color : "background-color: green;",
        text : "See it works!"
      }
    ]
  },
  computed : {
    currentObject : function() {
      return this.arrs[this.current];
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="root">
  <input type="number" v-model="current" min="0" max="2">
  <p :style="currentObject.color">
    {{ currentObject.text }}
  </p>
</div>

关于javascript - Vue 将一个对象作为计算属性展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53938239/

相关文章:

javascript - 将文本与 Trianglify Javascript 库一起使用

javascript - 在 Vuex 中存储 Fabric.js Canvas 引用 - [vuex] 不要在突变处理程序之外改变 vuex 存储状态

javascript - 寄生组合继承真的用了吗?

javascript - 使用 JavaScript 在下拉列表中保留选定的值

javascript - Material 表获取和设置过滤器值

javascript - 如何使用 Javascript 设置表单元素的值?

javascript - 每次导出一个新的对象

vue.js - 谁能帮助实现 Nuxt.js Google 标签管理器?

javascript - 绑定(bind) ref 在 vue.js 中不起作用?

javascript - 为什么事件处理程序无法获得正确的句柄?