我正忙着为我的一个朋友建一个网站,而他并不是那么懂电脑。所以我想了个办法让他更容易。
我想创建一个JSON文件,我可以在其中保存JSON文件中的所有文本和图像路径,这样他就可以进入该文件并应用他想要的更改,而不是像您通常那样搜索代码并在那里应用更改。
我以登录页面为例。
<template>
<div class="home">
<div v-for="data in myJson.hero" :key="data">
<v-card tile flat>
<v-img
height="885"
gradient="to top left, rgba(100,115,201,.13), rgba(25,32,72,.7)"
:src="data.image"
>
<template v-slot:placeholder>
<v-row class="fill-height ma-0" align="center" justify="center">
<v-progress-circular
indeterminate
color="grey lighten-5"
></v-progress-circular>
</v-row>
</template>
<v-row>
<v-col cols="12">
<div class="centered">
<h2 class="display-2 text-center white--text">
{{ data.firstHeading }}
</h2>
<h1
data-aos="zoom-in"
class="display-4 font-weight-bold text-center white--text"
>
{{ data.secondHeading }}
</h1>
<h3 class="subtitle-4 text-center white--text">
{{ data.subHeading }}
</h3>
<v-btn large class="btnCentered" outlined fab dark>
<v-icon>mdi-arrow-down</v-icon>
</v-btn>
</div>
</v-col>
</v-row>
</v-img>
</v-card>
</div>
</div>
</template>
<script>
import json from "../json/controller.json";
export default {
name: "Home",
data() {
return {
myJson: json,
};
},
components: {},
methods: {},
};
</script>
<style scoped>
.centered {
position: absolute;
top: 45%;
left: 50%;
transform: translate(-50%, -50%);
}
.btnCentered {
position: absolute;
top: 250%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>我的JSON文件:
{
"hero": [{
"name": "heroImage",
"alt": "telescopeImage",
"image": "@/assets/background/telescope.jpg"
},
{
"firstHeading": "HeroText",
"secondHeading": "HeroText",
"subHeading": "telescopeImage"
}
],
}我以前也这样做过,但是在一个Vue.js文件中,而不是从另一个文件

不知何故我做错了..。所以,如果有人能开导我的愚蠢,那就太好了。如果有人知道更好的方法,请不要保守秘密。
编辑**
我听从了@Daniel_Knights的建议,有点...只是它附带了一个不想要的功能。

登录页面会复制自身两次。就像一个著名的游戏公司会说它是一个令人惊讶的机械师。文本显示在第二个上,但不显示在图像上...
编辑* X2
弄清楚为什么它会自我复制两次。但图像仍然是一个问题。
它复制自身的原因是JSON文件不是这样的。
"hero": [{
"name": "heroImage",
"alt": "telescopeImage",
"image": "@/assets/background/telescope.jpg",
"firstHeading": "HeroText",
"secondHeading": "HeroText",
"subHeading": "telescopeImage"
}],发布于 2020-09-29 20:17:08
修好了!
@Daniel_Knights为我指明了正确的方向,先生,谢谢您的启发。
我的问题是JSON文件不正确,所以它自己迭代了两次。其次,我的图像不想显示,所以我认为这与JSON文件中的路径有关。
我创建了一个在作为路径的项之后添加@/的method。
我的登录页面
<template>
<div class="home">
<div v-for="data in myJson.hero" :key="data">
<v-card tile flat>
<v-img
height="885"
gradient="to top left, rgba(100,115,201,.13), rgba(25,32,72,.7)"
:src="letterIcon(data.image)"
>
<template v-slot:placeholder>
<v-row class="fill-height ma-0" align="center" justify="center">
<v-progress-circular
indeterminate
color="grey lighten-5"
></v-progress-circular>
</v-row>
</template>
<v-row>
<v-col cols="12">
<div class="centered">
<h2 class="display-2 text-center white--text">
{{ data.firstHeading }}
</h2>
<h1
data-aos="zoom-in"
class="display-4 font-weight-bold text-center white--text"
>
{{ data.secondHeading }}
</h1>
<h3 class="subtitle-4 text-center white--text">
{{ data.subHeading }}
</h3>
<v-btn large class="btnCentered" outlined fab dark>
<v-icon>mdi-arrow-down</v-icon>
</v-btn>
</div>
</v-col>
</v-row>
</v-img>
</v-card>
</div>
</div>
</template>
<script>
import json from "../json/controller.json";
export default {
name: "Home",
data() {
return {
myJson: json,
};
},
components: {},
methods: {
letterIcon: function (path) {
return require("@/" + path);
},
},
};
</script>
<style scoped>
.centered {
position: absolute;
top: 45%;
left: 50%;
transform: translate(-50%, -50%);
}
.btnCentered {
position: absolute;
top: 250%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>我的JSON文件
{
"hero": [{
"alt": "telescopeImage",
"image": "assets/background/telescope.jpg",
"firstHeading": "HeroText",
"secondHeading": "HeroText",
"subHeading": "telescopeImage"
}]
}https://stackoverflow.com/questions/64118227
复制相似问题