我正在try vuejs,下面是laracasts系列的网络广播.在https://laracasts.com/series/learning-vue-step-by-step/episodes/8中,Jeffery Way讨论了定制组件.根据他的视频,我有以下代码:

    <div id="app">
        <tasks list="tasks"></tasks>
    </div>

    <template id="tasks-template">
        <ul>
            <li :class="{'completed' : task.c}" @click = "task.c = ! task.c"  v-for ="task in tasks">{{task.t}}</li>

        </ul>

    </template>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.12/vue.js"></script>
    <script type="text/javascript">

    vue.component('tasks', {
    template: '#tasks-template',

    props:['list'] // why not props:['tasks'] ??

    });

    new Vue({
    el: '#app',
    data: {
        tasks: [
            {t: 'go to doctor', c: false},
            {t: 'go to work', c: false},
            {t: 'go to store', c: true}
        ]

    }

在这篇文章中,他讨论了如下设置props :

    props:['list'] 

为什么不呢

props:['tasks'] ?

http://vuejs.org/guide/components.html#Props个国家:

每个组件实例都有自己的独立作用域.这意味着您不能(也不应该)直接引用子组件模板中的父数据.数据可以通过props 传递给子组件."prop"是组件数据上的一个字段,预期会从其父组件传递下来.子组件需要使用props选项显式声明它希望接收的props:

组件如何知道将任务数组与列表关联?同样在这种情况下,我假设child=component,parent=vue实例?

推荐答案

组件上的属性名为list,传递给它的值为tasks.

让我们看看这个.首先,将主Vue实例attached(装载)到标识符为#app的元素上.这就是你的出发点.

<div id="app">
    <tasks list="tasks"></tasks>
</div>

在你的div里有一个<tasks>的标签.该标记对应于子组件,所以

child=组件,parent=vue实例

这是正确的.<tasks>组件是Vue类的扩展,该类只有一个声明为list的属性.这里最重要的是示波器.请注意,list属性属于tasks组件,在其声明中没有值,并且在模板上传递给它的值(#app div中的所有内容)属于父Vue实例(在Vue实例的data上声明).那你为什么不呢?Because the 100 component has no 107 data or property.如果您实际声明了类似于任务的属性,那么您必须按照以下方式编写模板

<div id="app">
    <tasks tasks="tasks"></tasks>
</div>

这会让人有点困惑.这就是为什么prop是list,因为声明list="tasks",组件知道list属性具有父任务数组的值.

Vue.js相关问答推荐

v-on 的 .native 修饰符仅在组件上有效,但在 标签上使用

使用计算(computed)属性更改视图

如何通过 setup() 发出多个参数?

何时将代码拆分为 Nuxt 中的组件?

超出最大调用堆栈大小 - Vue路由

为什么我在 Vue npm run serve 的 localhost 中得到无法获取

使用 Vue.js 将文件输入绑定到按钮

在 Vuex Store 模块中使用 Vue.js 插件

如何 for each 用户分组聊天消息?

在 Vue 项目之间共享assets和组件

如何在 vue 的 scss 中使用深度 Select 器

如何在 vue.js 模板中显示空间而不是 undefined 和 null?

Vue 和 Bootstrap Vue - 动态使用插槽

在组件的样式部分使用 Vue 变量

等待来自 WDS 的更新信号

Vue 3 - 带有全局组件的无法解析组件

Axios-一次发出多个请求(vue.js)

如何在 Vue 类组件中定义过滤器?

无法访问手表处理程序 vuejs 中的数据变量

Vue 3 组合 API 数据()函数