javascript - VueJS 通过节点插件返回循环数据值

标签 javascript vue.js

您好,我正在尝试创建一个 Vue 应用程序,它采用一种主色并从该主色创建一个调色板。 2 种颜色较浅,2 种颜色较深。我有一个输入字段,您可以在其中输入一个十六进制代码,然后它将生成其他 4 种颜色。我正在使用图书馆 chroma.js生成更暗/更亮的颜色,语法如下所示:

chroma('red').darken(.4)

这是输入框

<input class="w-100 pv3 pl4 input-reset ba b--black-20" @keyup="getColor(colorValue)" v-model="colorValue" placeholder="0AD674" >

这是我的for循环

<li v-for="item in items">
  {{ item.colorProperty }}
  {{ item.intensity }}
  {{ colorValue }}
</li>

还有我在 Vue 实例中的数据。

data () {
    return {
      colorValue: '4e35e1',
      items: [
            {
              intensity: 3,
              colorProperty: 'darken'
            },
            {
              intensity: 1,
              colorProperty: 'darken'
            },
            {
              intensity: 0,
              colorProperty: ''
            },
            {
              intensity: 1,
              colorProperty: 'brighten'
            },
            {
              intensity: 3,
              colorProperty: 'brighten'
            }
          ],
    }
}

所有这些都会产生类似的东西

3 darken 4e35e1
1 darken 4e35e1
0 4e35e1
1 brighten 4e35e1
3 brighten 4e35e1

这很酷,但理想情况下我会使用数据值来提供 Chroma.js 语法,例如

transformColor: function(value, property, intensity) {
   return chroma(value).property(intensity)
}

但显然那是行不通的。实现这一目标的最佳方法是什么?

我知道这是一个开放式问题。但是我在弄清楚我应该使用过滤器还是组件还是计算函数时遇到了麻烦。我尝试了大多数事情,但没有一个会奏效。我来自 jQuery 背景,所以事实证明这种以数据为中心的新方法很难让我全神贯注。感谢您的指点!

使用map()解决

 computed: {
    colors() {
      return this.items.map((item) => {
        var colorHex = chroma(this.colorValue)[item.colorProperty](item.intensity).toString();
        var colorName = _.kebabCase(namer(colorHex).ntc[0].name);
        return {colorHex, colorName}
      });
    }
  }

最佳答案

使用map()解决

computed: {
    colors() {
      return this.items.map((item) => {
        var colorHex = chroma(this.colorValue)[item.colorProperty](item.intensity).toString();
        var colorName = _.kebabCase(namer(colorHex).ntc[0].name);
        return {colorHex, colorName}
      });
    }
  }

关于javascript - VueJS 通过节点插件返回循环数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718522/

相关文章:

javascript - 无法在 JavaScript 中导入模块

javascript - 如何使用 Vue.js、Vuex、Express、MongoDB 检索当前用户数据

vue.js - 如何在watch :$route for Nuxt/Vue中获取页面标题

javascript - Vue.js 将 id 绑定(bind)到 onclick 函数

javascript - 直接 url 在 vuejs 中不起作用,但路由器推送有效

javascript - 在javascript中追加ruby部分,并传递一个rails变量

javascript - 响应 header 中的 Set-Cookie 未保存到浏览器 cookie 存储中

javascript - 导出到 xul 中的 excel

javascript - 防止多个upvote Angularjs

vue.js - 如何将哈巴狗与 Electron 战配合使用?