javascript - 组件 - 从父级获取数据?

标签 javascript vue.js vue-component

我正在学习 Vue.js,但我不明白为什么 <li>{{task.body}}</li>没有显示在屏幕上。

我创建了<tasks v-for="task in tasks"></tasks>组件,它需要访问父组件的数据。

参见:https://jsfiddle.net/pd03t1vm/

HTML:

<div id="app">
    <tasks v-for="task in tasks"></tasks>
</div>

<template id="tasks-template">
    <ul>
      <li>{{task.body}}</li>
    </ul>
</template>

JS:

Vue.component('tasks', {
    template: '#tasks-template',
});

new Vue({
    el: '#app',
    data: {
        tasks: [
            {body: 'Task 1 Something', completed: false},
            {body: 'Task 2 Something', completed: true},
            {body: 'Task 3 Something', completed: false},
            {body: 'Task 4 Something', completed: false}
        ]
    }
});

最佳答案

问题是您正在实例化 <tasks>组件中的数据来自根组件,但您没有将当前任务传递到 <tasks>组件,因此它根本无法访问它。

The Vue.js guide explains how to pass the data into a component using props :

首先需要绑定(bind)当前的tasksitem 的 prop(这里我称之为 <task> )组件

<div id="app">
  <tasks v-for="task in tasks" :item="task"></tasks>
</div>

请注意,您使用 : 绑定(bind)实际对象。在属性名称前面。

现在您需要定义 item属性(property)在<tasks>组件:

Vue.component('tasks', {
  props: ['item'],
  template: '#tasks-template',
});

顺便说一下:您的代码创建了 <tasks> 的四个实例。组件,以防万一您想知道 - 这可能不是您期望代码执行的操作。

关于javascript - 组件 - 从父级获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196077/

相关文章:

vue.js - VueJS 无法动态更新 v-text-field 值

javascript - 如何在 Laravel 应用程序上的 axios 中配置 header

javascript - Vuejs : use imported plugin mixin localy

javascript - 如果没有值显示默认日期 - 日期选择器 - ReactJs

javascript - 使用 Node.JS 设计机器人,以随机超时和通用例程运行

javascript - 无法将 JSON 文本响应中的 & 替换为 &

unit-testing - 为什么在使用 Jest 运行测试时,Trix 编辑器不会挂载到 Vue 组件中?

javascript - JQuery 附加不加载切换按钮的 css

javascript - vue.js -- 无法通过 css 更改 svg 的样式,并且在 dom 中它应用 element.style 而不是类名

javascript - Vue组件渲染时如何触发事件?