为了账号安全,请及时绑定邮箱和手机立即绑定

Vue使用v-for遍历出数据后,某些功能的实现,希望给点帮助或想法。

Vue使用v-for遍历出数据后,某些功能的实现,希望给点帮助或想法。

哈士奇WWW 2018-12-27 18:15:43
//attr数据"attr":[    {    "attrName":"颜色",    "attrList":[{"attrVal":"紫色"},{"attrVal":"红色"}]    },    {    "attrName":"型号",    "attrList":[{"attrVal":"大号"},{"attrVal":"中号"},{"attrVal":"小号"}]    }],//v-for的实现<div class="pro-attr">    <div class="pro-attr-list" v-for="item in numData.attr">    <h2>{{item.attrName}}</h2>    <ul>        <li v-for="listName in item.attrList" :class="{active:listName.attrVal==actAttr}" @click="actAttrFlag(listName.attrVal)">{{listName.attrVal}}</li>    </ul>    </div></div>渲染出来的结果问题:因为属性没有确定有多少个,所以只能循环出来 ,这样做出来的结果是不管是颜色和型号的所有选项中只能一个被选中,而我想要的结果是,颜色可以有一个被选中,型号也有一个可以被选中,我应该怎么改,或者有思路提供下也行,谢谢。
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

直接上代码咯,其实选好被选中属性的数据结构一样可以解决问题


<div class="container">

  <div v-for="(item, key) in attr">

    <h2>{{item.attrName}}</h2>

    <ul>

      <li v-for="attrItem of item.attrList" v-bind:class="{active: actAttr[key].value == attrItem.attrVal}" @click="selectItem(key, attrItem.attrVal)">

        {{attrItem.attrVal}}

      </li>

    </ul>

  </div> 

</div>

</template>

<script type="text/javascript">

export default {

  data () {

    return {

      actAttr: [{

        attrName: '颜色',

        value: '红色'

      }, {

        attrName: '型号',

        value: '中号'

      }],

      attr: [{

        attrName: '颜色',

        attrList: [{

          attrVal: '紫色'

        }, {

          attrVal: '红色'

        }]

      }, {

        attrName: '型号',

        attrList: [{

          attrVal: '大号'

        }, {

          attrVal: '中号'

        }, {

          attrVal: '小号'

        }]

      }]

    }

  },

  methods: {

    selectItem (key, val) {

      console.log(val)

      this.actAttr.splice(key, 1, {

        attrName: this.attr[key].attrName,

        value: val

      })

      console.log(this.actAttr[key])

    }

  }

}

</script>

<style type="text/css">

.container {

  text-align: left;

}

.active {

  color: red;

}

</style>


查看完整回答
反对 回复 2019-01-29
  • 1 回答
  • 0 关注
  • 562 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信