vue.js - Vue - 将 v-for 中具有相同键名的父数据传递给子组件

标签 vue.js

父组件:

                <template>
                    <div id="user">
                    Hello there! {{msg}} {{name}}
                    You have below messages
                    <Message v-for='(msg,index) in messages' 
                        :messageText='msg' 
                        :messageNumber='index+1' 
                        :welcome-msg='{{msg}}'></Message>
                    </div>
                </template>

                <script>
                    import Message from "./Message.vue";
                    export default {
                        data () {
                            return {
                                msg: 'Welcome dear',
                                name: 'Max',
                                messages: [ 'Message 1', 'Message 2']
                            }
                        },
                        components: {
                            Message
                        }
                    }
                </script>

子组件:

            <template>
                <div>
                    {{messageNumber}}. {{messageText}} - {{welcomeMsg}}
                </div>
            </template>

            <script>
                export default {
                    props: {
                        messageNumber: Number,
                        messageText: String,
                        welcomeMsg: String
                    }
                }
            </script>

我正在尝试将数据消息(“欢迎亲爱的”)从 parent 传递给 child 。有没有办法指定访问 welcome-msg 属性的父消息?

注意:我知道我可以通过更改 v-for 来使它工作。我刚开始学习 Vue.js,很想知道是否有办法通过某种范围界定来访问 parent 的数据

<Message v-for='(item,index) in messages' 
                    :messageText='item' 
                    :messageNumber='index+1' 
                    :welcome-msg='msg'></Message>

更新:这不是变量阴影的副本,因为对于变量阴影,有一种方法可以使用 window.functionName 调用全局函数。这个问题是 Vue.js 特有的,因此我不认为这是重复的。

最佳答案

curious to know if there is a way to access parent's data through some sort of scoping

这是不可能的。您需要选择不同的变量名称来区分它们。

可以做这样的事情,但这并不是比选择不同名称更好的解决方案:

// At the beginning of your code somewhere...
Object.defineProperty(Vue.prototype, '$self', {
  get() { return this }
})
<Message v-for="msg in messages" :messageText="$self.msg">
  {{ msg }}
</Message>

关于vue.js - Vue - 将 v-for 中具有相同键名的父数据传递给子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50596517/

相关文章:

javascript - 模拟 es6 模块返回工厂函数(moment.js)

javascript - 安装自定义 VueJs 插件的正确方法

javascript - 使用 vue-router 将查询绑定(bind)到 props

javascript - Firebase 是否发送给定路径下的所有数据?

vue.js - Vue-router:我可以在路由元中获取路由参数值吗?

javascript - 注释中的 Vue.js 绑定(bind)

javascript - 将 HTML 元素添加到 vue 模板

javascript - 计算方法无法识别更新的数据

vue.js - Vue 复选框不随数据更改而更新

javascript - Vue js 模态不会调整到它包含的元素的宽度以下