vue.js - 使用 v-for 与 HTML/JavaScript 逻辑嵌套 Vue 组件?
问题描述
我有这个v-for
循环:
<truchet-tile v-for="tile in tiles" v-bind:key="tile.id" :id="tile.id" :ttype="tile.ttype">
</truchet-tile>
我想在每一行<div>
瓷砖周围放置标签,这样这些行就不会像现在这样内联:
我可以创建一个名为 的新 Vue 组件rowOfTiles
,并在其上循环使用嵌套v-for
的每行中的 tile 组件。
相反,是否可以在不使用 DOM 方法的情况下,使用 HTML 和 JavaScript 将简单的嵌套循环逻辑应用于瓦片和瓦片行。像这样的东西:
如果是这样,在这样的情况下,是倾向于创建额外的 Vue 组件还是倾向于寻找在“模型”方面用数据做事的方法更好?(例如,创建新的 Vue 组件类的性能成本有多大?)
这是 JSFiddle:https ://jsfiddle.net/facechomp/hmLae5c8/6/
解决方案
由于您有一行瓦片的概念,因此您的数据中应该有一行瓦片。然后在模板中迭代它们很简单。
您的初始化可以是
for (let y = 0; y < height; y++) {
vm.tiles.push([]);
for (let x = 0; x < width; x++) {
// Vue tile component handles reactivity here:
vm.tiles[y].push({
id: id,
ttype: Math.round(Math.random() * 6) // random tile
});
id++;
}
}
你的模板会有类似的东西
<div v-for="row in tiles">
<truchet-tile v-for="tile in row" v-bind:key="tile.id" :id="tile.id" :ttype="tile.ttype">
</truchet-tile>
</div>
推荐阅读
- c - C程序创建一个简单的计算器
- android - 具有多对多关系的房间数据库:在查询过滤数据时返回单个条目
- android - 如何使用 GSON 实现 json?得到一个错误
- python - 新对象不会追加到列表
- node.js - 来自 Heroku 托管的 Express 的“应用程序崩溃”和 503 错误响应
- python - Masonite - TypeError > 使用 Auth 登录方法时没有字符串参数的编码
- image-processing - 图像为 JPEG,但 Torchvision 显示图像扩展名不受支持
- ethereum - 如何从 Metamask 获取账户地址?
- java - 如何停止在android中循环声音?
- c# - 如何从 SQL Server 数据库表列中获取男性或女性并在转发器控件中显示记录?