当前位置: 首页 > 知识库问答 >
问题:

在vue组件数据函数中访问props

林劲
2023-03-14

我正在将道具传递给组件:

html prettyprint-override">    <template>
       {{messageId}}
       // other html code
    </template>
    
    <script>
       export default {
          props: ['messageId'],
          data: function(){
             var theData={
                // below line gives ReferenceError messageId is not defined
                somevar: messageId,
                // other object attributes
             }
          }
       }
    </script>

在上面的代码中,我已经注释了给出错误的行。如果我删除该行,它会正常工作并且模板渲染正确(我也可以看到{{MessageId}}的预期值)。因此传递数据的逻辑是正确的。

似乎在 data() 中访问 messageId 的方式是错误的。那么如何访问数据中的道具消息Id呢?

共有3个答案

邓令雪
2023-03-14

要分配等于props的数据属性,您可以使用Watcher,如下所示:

<script>
   export default {
      props: ['messageId'],
      data: function(){
         var theData={
            somevar: "",
            // other object attributes
         }
      },
      watch: {
        messageId: function(newVal) { 
           this.somevar = newVal
        }
      }
   }
梅安平
2023-03-14

编辑:根据Ryans的文章,可以使用如下箭头函数引用实例:

data: (instance) => ({
  somevar: instance.messageId 
}),

前一篇文章:

请注意,如果您使用箭头函数来分配数据,则这不起作用:

data: () => ({
  somevar: this.messageId // undefined
}),

因为this不会指向组件。相反,使用普通函数:

data: function() {
  return { somevar: this.messageId }
},

或者像Siva Tumma建议的那样使用ES6对象方法速记:

data() {
    return { somevar: this.messageId }
}
宗政昱
2023-03-14

data() 方法中,可以使用此方法引用组件的属性。

所以在你的情况下:

data: function() {
  var theData = {
    somevar: this.messageId,
    // other object attributes
  }

  return theData;
}
 类似资料:
  • 我有下面的子组件。道具从父级中的输入选择器更新。为什么 不更新孩子的 家长: 孩子:

  • 如何从父组件中访问子组件数据?我有一个父组件“MissionPlanner ”,我想访问名为“ChosenHeroes”的子组件“chosenHeroes”数组。如果数组中有元素,我想最终呈现一个div并能够更新父数组中的数组 我不确定我是否应该使用emit()以及如何确切地使用它。我尝试制作一个自定义事件“addHero”并将其传回。但是我遇到了错误 ChosenHeroes.vue HeroP

  • 项目描述: 数据访问组件,提供了一组类库和一个代码生成工具,使.net项目中数据访问更简化. 功能: 多种数据库支持. 提供DataSet, DataTable 和数据实体查询. 执行SQL脚本及存储过程. 条件表达式. 常用SQL方法, 如MAX, MIN等可能被应用在查询中. 数据实体代码及XML文件生成. 使用: 基本功能:1. 使用 "EntitiesGenerator" 生成工具生成实体

  • 问题内容: 我正在使用一个模板引擎,该引擎将代码插入我想要的站点中。 我写了一个函数来测试一些很简单的东西: 问题是,$ this-> data是私有的,我无法在任何地方访问它,因此我必须使用getData();。导致我的问题。 不起作用,并且先分配值也不起作用,因为它将直接在if()块中使用。 有任何想法吗? 问题答案: 从PHP 5.4开始,可以完全做到这一点:

  • 我在用vue-cli支架做网页包 我的Vue组件结构/传家宝目前看起来如下: 应用程序 在应用程序级别,我需要一个vuejs组件方法,该方法可以将子组件的所有数据聚合到一个JSON对象中,然后发送到服务器。 有没有办法访问子组件的数据?具体来说,多层深? 如果没有,传递oberservable数据/参数的最佳实践是什么,这样当子组件修改它时,我就可以访问新的值?我试图避免组件之间的硬依赖关系,所以

  • 我用以下方法加载一个FXML文件 上面的代码运行正常,现在我想访问在控制器类的构造函数中,但它给出了一个错误:线程“JavaFX应用程序线程”java中的异常。lang.NullPointerException。 注意:我已经为文本字段分配了一些默认值,这就是为什么我想访问它们。 下面是我的控制器类 Controller.java 如有任何建议,将不胜感激。谢谢:)