【发布时间】:2020-10-01 05:29:50
【问题描述】:
我是 vue 和 Laravel 框架的新手。
我想从 api 获取数据并动态显示这些数据。
我创建了一个名为“Progress”的表并植入了一些数据。我已经使用 API 资源来获取数据。
我已经创建了一个 vue 模板来从 api 中获取数据。
这是我的模板
<template>
<div class="container">
<h1> Goals </h1>
<p id="demo"></p>
<div class= "progress progress-bar-segmented" v-for = "progressdata in progress" v-bind:id="progressdata.id">
<div> {{ progressdata.name }} </div>
<div id="div1" class="progress-bar" style="width:20%">{{ progressdata.goal }}</div>
<div id="div2" class="progress-bar value" style="width:20%">{{ progressdata.value }}</div>
</div>
</div>
</template>
问题是如何从脚本中的进度数组访问单独的值,如 {{ progressdata.goal }} 和 {{ progressdata.value }}?
如果我在方法中使用var a = this.progressdata.goal。我可以收到undefined value
我知道它们只能在该范围内访问。如何在脚本中单独访问它们?
这是我的脚本
<script>
export default {
data: function() {
return {
progress: [],
}
},
mounted() {
this.loadContents();
this.start();
setInterval(this.loadContents, 1000);
},
methods: {
loadContents: function() {
//load Api
axios.get('/api/progress')
.then((response) => {
this.progress = response.data.data;
})
.catch(function (error) {
console.log(error);
});
},
start: function() {
var allProgressElements = document.getElementsByClassName('progress');
Array.prototype.forEach.call(allProgressElements, function(el) {
var targetDOM = $(el).getElementsByClassName('value');
targetDOM.innerHTML = json.data[targetDOM.id].value;
});
}
}
}
</script>
Anyone could help please?
thank you.
【问题讨论】:
-
可以完全去掉启动功能。在成功的 axios 调用中,
progress值被设置,并且由于 Vue 的反应性,v-for将被激活。在 axios 响应中执行console.log以检查响应。响应是一个对象数组,如您所料吗? -
感谢您的反馈。不,我需要单独获取进度数组中每个项目的值,例如目标和值..如何获取它们?以及如何在脚本的方法中传递它们?你能帮忙吗..
-
在您的脚本(方法、计算等)中,您可以访问
progress数组,并访问数组中的每个项目:a = this.progress[0].goal -
是的,我在一个方法中尝试过
a = this.progress[0].goal..但我收到了 TypeError: Cannot read property 'goal' of undefined"。如何解决这个问题?你能帮忙吗?
标签: javascript php html laravel vue.js