javascript - 如何在 Vue.js 中使用 v-for 动态创建一个新的 div?

标签 javascript jquery html vue.js vuejs2

我想根据数组中存在的元素数量动态创建 div。 div 包含由 ProgressBar.js 创建的 html 元素。

这是 Vue.js 代码

import ProgressBar from 'progressbar.js'
var bar;

export default {
    data() {
        return {
            fitness: ['Run', 'Cycle'],
            val: 0.65
        }
    },

    mounted(){
        this.showProgressBar(this.val);
    },


    created: function() {

    },

    methods:{
         showProgressBar: function(val){
            new ProgressBar.Circle('#container',{
                trailColor: 'gainsboro',
                trailWidth: 20,
                color: 'teal',
                strokeWidth: 20
            }).animate(val); 
         }
    }
}
<div class="content" v-for="fitness in fitness">
  <span>{{ fitness }}</span>
  <div id="container"></div>
</div>

由于一个 id 仅与一个 div 相关联,因此我无法执行将创建另一个 div 的新 ProgressBar.Circle 对象。每次执行新的 ProgressBar.circle 时,有没有办法在 v-for 中动态创建一个具有不同 id 的新 div?有人可以帮我吗?

最佳答案

这是一个包装 progressbar.js 的可重用组件。

<template>
  <div class="container"><div ref="bar"></div></div>
</template>
<script>
  import ProgressBar from "progressbar.js"

  export default {
    props:["options", "val"],
    mounted(){
      new ProgressBar.Circle(this.$refs.bar, this.options).animate(this.val)
    } 
  }
</script>
<style>
  .container{
    width:100px; 
    height: 100px
  }
</style>

这是它在模板中的用法:

<div v-for="fit in fitness" class="fitness">
  <div>{{fit.name}}</div>
  <progress-bar :val="fit.val" :options="options"></progress-bar>
</div>

工作 Example .

关于javascript - 如何在 Vue.js 中使用 v-for 动态创建一个新的 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45720514/

相关文章:

javascript - 谷歌地图自定义标记和自定义信息窗口

javascript - 为 AngularJS 指令的根元素设置样式

javascript - 防止隐藏的表单 div 在按下提交按钮时自动隐藏

javascript - jQuery 添加一个类但不会删除一个

javascript - 将模型转换为数组 mvc 3

javascript - 即使父导航具有固定宽度,也使下拉导航跨越浏览器的宽度

javascript - 根据屏幕大小将类添加到 html

javascript - JavaScript 中的上一张和下一张图片链接

javascript - 一个关于chrome扩展的简单问题。 : )

javascript - 使用 .outerWidth()/.outerHeight() 将带有边距/填充的元素居中。函数返回不同的边距和填充值