gpt4 book ai didi

vue.js - 从 data() 调用函数

转载 作者:行者123 更新时间:2023-12-04 17:32:16 32 4
gpt4 key购买 nike

我是 vue.js 2 的新手。我目前正在使用 vue 框架在内部重新创建此图: https://codepen.io/apexcharts/pen/rqWeBX

我需要从 generateDayWiseTimeSeries() 函数中获取一些数据。我目前正在从 DATA() 调用它,它导致我出现此错误:

[Vue warn]: Error in data(): "ReferenceError: generateDayWiseTimeSeries is not defined"

我尝试过使用 .this 语法返回数据并将函数放在 created: 部分中,但没有成功。

这是我的 vue.js 代码,如果你能告诉我这样做是否正确,我将不胜感激。

Vue.component("apexchart", VueApexCharts);

const Dashboard = {
data: function() {
return {
series_5: [
generateDayWiseTimeSeries(new Date("22 Apr 2017").getTime(), 115, {
min: 30,
max: 90
})
]
};
},
components: {
apexcharts: VueApexCharts
},
methods: {
generateDayWiseTimeSeries: function(baseval, count, yrange) {
var i = 0;
var series = [];
while (i < count) {
var x = baseval;
var y =
Math.floor(Math.random() * (yrange.max - yrange.min + 1)) +
yrange.min;

series.push([x, y]);
baseval += 86400000;
i++;
}
return series;
}
},
,
template: `
// THE TEMPLATE IS USELESS FOR THIS PROBLEM
<div class="container">

<div class="row" >
<div class="col-sm col-xs-12">
<div class="card " style ="margin-bottom : 20px" >

<div class="card-body">
<h5 class="card-title">Indices de ventes</h5>
<p class="card-text">Ventes totales .</p>
<div><apexchart type="bar" :options="options_1" :series="series_1"></apexchart></div>
</div>
</div>
</div>
<div class="col-sm col-xs-12">

<div class="card " style ="margin-bottom : 20px" >

<div class="card-body">
<h5 class="card-title">Ventes</h5>
<p class="card-text">Indice des ventes total.</p>
<div><apexchart type="line" :options="options_2" :series="series_2"></apexchart></div>
</div>
</div>
</div>



</div> // THE TEMPLATE IS USELESS FOR THIS PROBLEM

`
};

编辑:修改

series_5: [
this.generateDayWiseTimeSeries(new Date("22 Apr 2017").getTime(), 115, {
min: 30,
max: 90
})
]

现在它似乎起作用了!

最佳答案

可以通过将 this 添加到对 generateDayWiseTimeSeries() 的调用来解决您的问题。

series_5: [
this.generateDayWiseTimeSeries(new Date("22 Apr 2017").getTime(), 115, { min: 30, max: 90 })
]

它没有声明为全局函数,所以调用时需要提供上下文。


话虽如此,您正在寻找的似乎是 computed property .按如下方式修改您的 JavaScript:

const Dashboard = {
data: function() {
return {};
},
components: {
apexcharts: VueApexCharts
},
computed: {
series_5() {
return this.generateDayWiseTimeSeries(new Date("22 Apr 2017").getTime(), 115, { min: 30, max: 90 });
}
},
methods: {
generateDayWiseTimeSeries: function(baseval, count, yrange) {
var i = 0;
var series = [];
while (i < count) {
var x = baseval;
var y =
Math.floor(Math.random() * (yrange.max - yrange.min + 1)) +
yrange.min;

series.push([x, y]);
baseval += 86400000;
i++;
}
return series;
}
},
,

...

}

一般来说,逻辑不属于data() 函数。按照惯例,data() 只返回一个表示 Vue 实例数据的 JSON 对象。

关于vue.js - 从 data() 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58529466/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com