StackOverflow关闭了

2022-02-13 10:46:30

<;模板>;{{messageId}//其他html代码</模板>&书信电报;脚本>;导出默认值{props:[';messageId';],data:function(){var theData={//下面一行给出引用错误messageId未定义somevar:messageId,//其他对象属性}}}</脚本>;

在上面的代码中,我对给出错误的那行进行了注释。如果删除该行,它将正常工作,模板呈现正确(我也可以看到{messageId}}的预期值)。因此,传递数据的逻辑是正确的。

似乎在data()中访问messageId的方法是错误的。那么如何访问数据中的props messageId呢?

2.

data:function(){var theData={somevar:this.messageId,//其他对象属性}返回theData;}

1.

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

请注意,如果使用箭头函数分配数据,则此操作无效:

有一次我被这个烫伤了。它';这是一个微妙的区别,但是将函数从arrow切换到data(){return{}就可以了。谢谢木法沙。

实际上可以使用arrow函数——第一个参数将是对实例的引用。数据:vm=>;({somevar:vm.messageId})

@jvndev是的,底部的两个是相同的,顶部的一个是一个arrow函数,它以不同的方式处理上下文

要将数据属性指定为道具,可以使用watcher,如下所示:

<;脚本>;导出默认值{props:[';messageId';],数据:function(){var theData={somevar:";";";//other object attributes},注意:{messageId:function(newVal){this.somevar=newVal}

8@RoyJ是的,这也是可以做到的,但是如果你想更新数据变量,你必须使用computed with getter。

我的意思是,如果somevar从来都不是由观察者指定的,那么您应该用计算值替换数据项。

它使代码更清晰。计算机实际上是一个观察者加上一个数据项。

如果要渲染子组件,并希望通过道具设置数据变量,则必须同时使用此函数和监视函数:

<;脚本>;导出默认值{data(){id:0},props:[';propId';],方法:{init(){this.id=this.propId//step1.assign propId to id}}</脚本>;

<;脚本>;导出默认值{data(){id:0},props:[';propId';],方法:{init(){this.id=this.propId//step1.assign propId to id},//将其添加到代码中,这是必须的。//否则你赢了';看不到属性watch{propId:function(new_value){this.init()}}}指定的数据变量</脚本>;

假设您有两个组件:父级和子级(子级的属性命名为propId),子级也有一个";异步";操作,例如读取数据库。

<;模板>;{{messaged}//其他HTML代码</模板>&书信电报;脚本>;导出默认值{props:[';messaged';],数据:function(){return(){some_-var:this.messaged}},methods:{post_-order:function(){console.log({some_-var:this.some_-var.id})}</脚本>;

3元#39元;后面没有括号。正如您返回的(){some_var:this.messaged}

我认为你已经完成了你的解决方案,因为这个问题在几个月前发布了。我昨天也遇到了同样的问题,所以没有运气就尝试了以上的解决方案。然而,我想分享一个替代的解决方案,这对某人有很大帮助。watch有一些属性来处理这些类型的案例。下面的纸条显示了我们如何接受道具价值是数据。

<;脚本>;导出默认值{props:{messageId:{type:String,required:true}}data:function(){var theData={somevar:";";,//其他对象属性}返回theData;},监视:{messageId:{//组件加载立即运行:true,handler(){//将';somevar';值设置为props this.somevar=this.messageId;}}}}</脚本>;

点击“发布您的答案”,即表示您同意我们的服务条款、隐私政策和cookie政策

不是你的答案';你在找什么?浏览其他问题或问自己的问题。