arrays - 从外部 JSON 文件构建数组时 V-for 不工作
问题描述
Javascript:
// List of Products
const productsJSON = 'json/products.json';
// Component - Product Select
app.component('product-select', {
data() {
return {
selected: '',
options: []
}
},
template: `
<p v-for="(option, index) in options">test</p>
<div class="ui fluid labeled multiple search selection dropdown">
<input type="hidden"
name="products"
v-model="selected"
@change="selectProducts">
<i class="dropdown icon"></i>
<div class="default text">Select Products</div>
<div class="menu">
<div v-for="(option, index) in options"
class="item"
v-bind:data-value="option.name">
{{ option.name }}
</div>
</div>
</div>
`,
methods: {
selectProducts(event) {
this.selected = event.target.value.split(',');
console.log(this.selected);
}
},
beforeMount() {
const jsonResults = [];
this.options = jsonResults;
$.getJSON(productsJSON, function (data) {
jsonResults.push(...data);
});
console.log(jsonResults);
console.log(this.options)
}
});
我只是试图用从函数options: []
中的 JSON 文件返回的对象数组填充数组。$.getJSON
JSON 文件如下所示:
[
{
"name": "White Gummy",
"value": "White Gummy"
},
{
"name": "Red Gummy",
"value": "Red Gummy"
},
{
"name": "Blue Gummy",
"value": "Blue Gummy"
}
]
我v-for
的绝对没有返回,我的两个console.log
函数的结果如下:
有没有人知道我做错了什么,或者是否有更好的方法来使用外部 .json 文件填充我的数组?
解决方案
@Luckyfella 提供了一个解决方案,可以在下面的created()
生命周期挂钩中找到:
// Component - Product Select
app.component('product-select', {
data() {
return {
selected: '',
options: null
}
},
template: `
<div class="ui fluid labeled multiple search selection dropdown">
<input type="hidden"
name="products"
v-model="selected"
@change="selectProducts">
<i class="dropdown icon"></i>
<div class="default text">Select Products</div>
<div class="menu">
<div v-for="(option, index) in options"
class="item"
v-bind:data-value="option.name">
{{ option.name }}
</div>
</div>
</div>
`,
methods: {
selectProducts(event) {
this.selected = event.target.value.split(',');
console.log(this.selected);
}
},
created: function () {
fetch(productsJSON)
.then(r => r.json())
.then(options => {
this.options = options;
});
}
});
推荐阅读
- php - Symfony 5 缓存组件 AWS elasticache 无效 DSN
- php - Yii2 - 下载损坏的文件
- delphi - Indy TIdHashMessageDigest5 HashStringAsHex 编译时错误:未声明的标识符:'HashStringAsHex'
- java - 为什么握手后我的套接字关闭了,我该如何解决这个问题?
- c# - 如何对将在多个步骤中创建的聚合进行建模,例如向导样式
- azure - 将 Azure 数字孪生与现有云环境连接
- verilog - 使用带负数的系统函数 $urandom_range(minval, maxval) 时的未定义行为
- r - 使用 R 处理多个光栅文件时保留原始文件名
- flutter - 关于防止 Listview.Builder() 重建所有项目
- sas - 寻找季节性效应的自变量?