javascript - 将循环变量放入模板的属性中
问题描述
我一直试图让这个循环工作,但我一直收到错误
卡未定义
如何img
将卡片对象的属性放入模板中?
function Board() {
this.cards = [new Card()];
}
function Card() {
this.img = 'img.png';
}
Vue.component('card', {
props: ['card'],
template: '<img v-bind:src="card.img">'
});
let app = new Vue({
el: '#app',
data: {
board: new Board()
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<card v-for="card in board.cards" v-bind:key="card.img">
</div>
解决方案
我不做 Vue.js,但让我大吃一惊的是,你说你的card
组件需要一个card
属性,但你却给了它一个key
属性。跳出来的另一件事是试图进入card.img
两个地方(模板和标记)。
如果您在标记中更改v-bind:key="card.img"
为v-bind:card="card"
(或:card="card"
),它会起作用:
function Board()
{
this.cards = [new Card()];
}
function Card()
{
this.img = 'img.png';
}
Vue.component('card',
{
props:['card'],
template: '<img v-bind:src="card.img">'
});
let app = new Vue(
{
el:'#app',
data:
{
board: new Board()
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<card v-for="card in board.cards" v-bind:card="card">
</div>
或者,如果您希望key
Vue.jscard
将卡片按顺序排列,card.img
您将同时拥有:
function Board()
{
this.cards = [new Card()];
}
function Card()
{
this.img = 'img.png';
}
Vue.component('card',
{
props:['card'],
template: '<img v-bind:src="card.img">'
});
let app = new Vue(
{
el:'#app',
data:
{
board: new Board()
},
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<card v-for="card in board.cards" v-bind:key="card.img" v-bind:card="card">
</div>
推荐阅读
- ansible - 使用 Ansible 删除配置文件中的确切行块
- rest - 如何使用外部 api 休息?
- c++ - 如何在 Ubuntu 中将内容从一个文件传输到另一个文件。?
- excel - How to insert a point in a txt file?
- python - Flask-sqlalchmey 行更新反映在 sqlite DB 中
- scala - SCALA 和弹性搜索:将符号添加到类路径(Databricks)
- cleartool - rmstream 的 CCRC 命令
- python-3.x - 如何获取键的索引?
- angular - How to make observable wait for the previous observable to complete
- python - 有没有一种简单的方法可以在 python 的列表中输出一个列表?像这样 [[0,1], [2,3]]