我的基本 vue 代码如下所示:
new Vue({
el : '#friendlist',
data : {
friends : []
},
methods : {
fetchStats : function(){
const axios_data = {
_token : $('meta[name="csrf-token"]').attr('content')
};
axios.post('/friend-stats/all', axios_data).then(response => {
this.friends = response.data;
});
}
},
mounted : function(){
this.fetchStats();
},
现在,对于数组friend中的每个friends,我需要渲染一个 d3.js 图表。我在另一个 JS 文件中有一个可以正常工作的方法,它被称为create_spider_chart(friend, target). 该friend变量包含来自我们上面的 vue 组件的朋友数组的成员,并且target是图表应该附加到的目标元素。这就是问题出现的地方。
如果我在 axios 调用的响应中这样做:
this.friends = response.data.data;
let target;
for(let i=0;i<this.friends.length;i++){
target = '.spider-graphic-mini[data-id="'+this.friends[i].id+'"]';
create_spider_chart(this.friends[i], target); //d3.js
}
该元素.spider-graphic-mini[data-id="'+this.friends[i].id+'"]确实存在于 HTML 中:
<template v-for="(friend,key) in friends">
<div class="col-md-6 friend-panel p-3">
<h5>@{{ friend.name }}</h5>
<div class="spider-graphic-mini mb-4" :data-id="friend.id"></div>
</div>
</template>
但是,当我将该标识符传递给create_spider_chart函数时,该元素显然不存在。如此$(target),length=0函数不知道在哪里创建图表。
我该如何解决这个问题?
慕斯709654
相关分类