【发布时间】:2018-04-28 15:57:13
【问题描述】:
我正在尝试完成一项 FreeCodeCamp 挑战。这是一个随机报价生成器,我终于找到了一个可以在 CodePen 上运行的 API 站点。
我的问题是它似乎有效。我运行脚本,它给了我一个随机报价,因此 API 和 fetch() 工作。但是控制台一直给我一个cannot read property 'quote' of undefined,这会破坏我的JavaScript,并且不会让我点击我的按钮来获取另一个。
我在这里使用 Vue,而且我对 Vue 还很陌生。在今天之前我实际上从未使用过 Vue,但是在通过 Vue.js 的介绍之后,我认为我至少可以处理这个问题,所以我决定用 Vue 来做这件事。据我了解,我不明白引号数组是如何未定义的。我的 JSON 文件中有 10 个引号,随机函数包含在内,所以它只会抓取 0-9,所以不是索引越界的问题。
以下是相关代码(一个 .html 文件和一个 .js 文件):
<h1>Random Quote Generator</h1>
<div id="quote-block">
<span id="quote">{{ quotes[index].quote }}</span>
<p><span id="author">-{{ quotes[index].author }}</span></p>
<p><button id="new-quote">New Quote</button></p>
</div>
const app = new Vue({
el: '#quote-block',
data: {
quotes: [],
index: random(0,9)
},
created() {
fetch('https://api.myjson.com/bins/1fb9jb')
.then(response => response.json())
.then(json => this.quotes = json.quotes)
.catch(error => console.log(error));
currentColor = colorize();
},
// getQuotes: ()=> {
// this.index = random(0,9);
// currentColor = colorize();
// }
});
完整的代码笔(其余的只是随机颜色生成器和与 Vue 或此问题无关的鼠标悬停)在这里:https://codepen.io/jkuhl/pen/JMrxGV?editors=1010
注释代码将是使用@click 实现的点击事件代码
每当我尝试访问引号数组中对象的值时都会收到此错误。我可以访问引号数组本身,这些值没有问题。就像我用 {{quotes}} 而不是 {{quotes[index].quote }} 我得到整个数组显示得很好。当我尝试访问数组中对象的值时,我的脚本就会中断。我做错了什么?
【问题讨论】:
标签: javascript html vue.js