【问题标题】:Vue.js how to for-loop and style an objects properties within an array?Vue.js 如何对数组中的对象属性进行循环和样式化?
【发布时间】:2018-08-12 09:18:39
【问题描述】:

我目前正在使用 Vue.JS,但在使用 v-for 循环输出一些数据时遇到了一些问题。

我的目标是让“基础”项目重复出现,但包含独特的信息,请参阅下图以供参考。

到目前为止,我已经完成了一些工作。我不确定这是否是“最好的”或最有效/最佳的方法,所以我希望有人能给我一些建议。

<template>
<div>
  <ul>
    <li v-for="value in items">
        {{ value.itemname }}
        {{ value.itemprice }}
        {{ value.bInStock }}
    </li>
  </ul>
</div>
</template>

<script>
export default {
  data: function () {
    return {
        items: [
          {
            itemquality: "Brand new",
            itemname: "Test Item Name",
            itemprice: "$426.32",
            bInStock: false
          },
          {
            itemquality: "Used",
            itemname: "Test Item Name 2",
            itemprice: "$126.32",
            bInStock: true
          }
        ]
    }
  }
}
</script>

我遇到的下一个问题是将一个类绑定到一个基于“项目”数组中的数据的值。 如果我不使用数组,而只使用一个对象,我可以这样做;

  <li v-for="(value, key) in myArrayOfObjects">
     <div :class="{'my-price-class': key === 'price'}"> {{value}}</div>
  </li>

但是,因为我有一个数组,所以返回的“键”只是数组索引。有什么方法可以使用对象属性,例如; 'itemname' 在数组中时作为键?

感谢任何帮助。 :)

【问题讨论】:

    标签: javascript html for-loop web vue.js


    【解决方案1】:

    做吧

    <li v-for="item in array">
      <div class="price-div">{{ item.price }}</div>
    </li>
    

    回到问题,要实现你提到的行为,只需再次迭代项目(对象)以获取键值

    new Vue({
      el: '#app',
      data() {
        return {
          myArr: [{
            key1: 'some key value 1',
            key2: 'some key value 2',
            redKey: 'red key value',
            key4: 'some key value 3'
          }]
        }
      }
    })
    .red {
      background: red;
      color: white
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
    
    
    <div id="app">
      <div v-for="(value in myArr">
        <div v-for="(v, k) in value">
          <p :class="{red: k === 'redKey'}">
            {{ k }} : {{ v }}
          </p>
        </div>
      </div>
    </div>

    【讨论】:

    • 谢谢,这帮助很大。但是,我现在遇到的一个问题是,在第二个 for 循环中,我无法使用点运算符访问属性。例如我做不到; {{ v.name }}
    • 另外,如果我的意思需要进一步澄清,或者需要一个例子,请告诉我,我会发布一些示例代码或给出我的意思的可视化表示。 :)
    • 因为v.name不存在,所以v已经是key(k)名的值了。
    • 嘿,恐怕我不确定你的意思。如果我这样做; {{ item }} 它输出数组中的所有属性。如果我做其他类似的事情; item.name', key.name` 等等......它不起作用。这是我设法得到的最好的 JSFiddle。也许您可以通过我的示例详细说明您之前所说的内容。 jsfiddle.net/50wL7mdz/155729 谢谢。
    • 它不起作用,因为item 只是键 (k) 上索引的对象的普通值 (v),所以如果是 obj.name = 'foo',那么 obj[k] = 'foo' 和 v = 'foo' ,看看 for-in 文档developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多