【问题标题】:Passing data from Vue Instance to local Vue Component将数据从 Vue 实例传递到本地 Vue 组件
【发布时间】:2019-03-28 20:56:08
【问题描述】:

我有一个 Vue 实例,其中包含一个像这样的本地组件

// vue instance for the navbar menu
var foo = new Vue({
    el: '#custom-header',
    data: {
        label1 : 'text1',
        lable2 : 'text2',
        lable3 : 'text3',
        lable4 : 'text4'
    },
    methods: {

    },
    components : {
      'container-header' : {
          template : '<div class="col">'+
                      '<div class="custom-erp-activity-details">'+
                        '<span id="custom-erp-activity">{{ lable1 }}</span>'+
                        '<span id="custom-erp-activity-name">/ {{ label2 }}</span>'+
                        '<span id="custom-erp-activity-name">/ {{ label3 }}</span>'+
                      '</div>'+
                      '<div class="custom-erp-activity-controls">'+
                        '<button class="btn btn-danger" id="custom-erp-toggle-views">'+
                          '{{ label4 }}'+
                        '</button>'+
                      '</div>'+ 
                    '</div>'
      },
      props : ['label1']
    }
  })

如何使用组件中父数据中的 Label1?我尝试使用props,但对于所有四个标签,我仍然遇到这样的错误

属性或方法“label1”未在实例上定义,但在渲染期间被引用。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件

【问题讨论】:

  • 您遇到了什么错误?不要忘记您必须在父模板中传递值:&lt;container-header :label1="label1"&gt;&lt;/container-header&gt;
  • 我已经在问题中添加了错误消息,是的,我确实像 &lt;container-header :label1="label1" :label2="label2" :label3="label3" :label4="label4"&gt;&lt;/container-header&gt; 那样传入了元素
  • 哦,看起来你的props实际上并不是你的组件的一部分,你需要将它们移动到组件中。
  • 你也可以分享 HTML 吗? #custom-header的代码

标签: vue.js vue-component


【解决方案1】:

你需要让 props 成为你组件的一部分。

components : {
  'container-header' : {
     template : '...',
     props : ['label1'] // HERE
  },
  // props: ['label1'] NOT HERE
}

注意,props 被定义为container-header 组件的属性。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2017-09-12
    • 2017-02-24
    • 2019-05-05
    • 2017-12-04
    • 1970-01-01
    • 2018-02-02
    相关资源
    最近更新 更多