vue.js - 如何在VueJS中将数据从视图传递到组件
问题描述
也许我不了解这里的一些基本原理,但是我已经阅读了文档并尝试了 2 个小时的不同方法,但我无法理解这一点。
所以,我有一个VueJS
应用程序,在数据中我有一个名为pattern
. 它看起来像:
[3, 4, 2, 6, 1, 8, 7, 9, 5]
在我看来,我正在遍历这个数组并为每个元素显示一个 div:
<div v-for="(ball, key) in pattern">@{{ ball }}</div>
很简单,对吧?
现在,我将让这个 div 中的 HTML 更加复杂。但在我这样做之前,我想把它作为一个单独的组件(我可能会在网站的其他地方重用它,这样这种方法似乎很有意义)。
因此,在我的主要 VueJS 应用程序中,我注册了一个新组件:
Vue.component('rack', require('./components/Rack.vue').default);
我创建Rack.vue
了以下内容:
<template>
<div>
<!-- show ball number here -->
</div>
</template>
<script>
export default {
mounted() {
}
}
</script>
我尝试<rack></rack>
在 for 循环内的 HTML 中添加一个元素。
但是现在我不知道如何将ball
数据传递给每个组件。我应该在页面上显示 9 个组件(数组rack
的每个成员 1 个)。pattern
我曾尝试添加v-model
到<rack>
元素中,但这会导致警告。我也尝试过类似:ball
属性的东西,但这引发了错误。我认为我应该以某种方式使用道具,但我对 Vue 1 和 Vue 2 在这方面的语法和差异感到困惑(我使用的是 2.6.10)。
解决方案
<template>
<div>@{{ ball }}</div>
</template>
<script>
export default {
props: ['ball']
}
</script>
然后你会像这样在视图中使用你的组件:
<template>
<div v-for="(ball, key) in pattern" :key="key">
<Rack :ball="ball" />
</div>
</template>
<script>
export default {
components: {
Rack: () => import('./components/Rack.vue'),
},
data: () => ({
pattern: [3, 4, 2, 6, 1, 8, 7, 9, 5]
})
}
</script>
推荐阅读
- r - 将元素添加到 R 中的调用对象
- javascript - 如何使 onclick 适用于不同的页面而不仅仅是同一页面
- android - 如何以编程方式更改 TextInputEditText 的线条和提示颜色?
- ios - 将 UIView.layer.clipsToBounds = true 与 CABasicAnimation 结合使用时,并非所有像素都被裁剪
- javascript - 无法设置状态 REACT/JS:无法读取未定义的属性“地图”
- python - 找不到输入到 ReadVariableOp 的变量
- ios - iOS蓝色状态栏同时使用地理围栏/背景位置更新来触发通知
- windows - 在 Powershell 中为计划任务创建每月触发器(使用附加条件)
- sql-server - 我可以使用 Report Builder 2016 创建使用 SSRS 2014 的报告吗?
- python - PySpark 合并数据框和计数值