Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript vue类组件语法中vue模型的计算getter/setter(因此为“props”)_Typescript_Vue.js_Vuejs2_Vue Class Components_Vue Property Decorator - Fatal编程技术网

Typescript vue类组件语法中vue模型的计算getter/setter(因此为“props”)

Typescript vue类组件语法中vue模型的计算getter/setter(因此为“props”),typescript,vue.js,vuejs2,vue-class-components,vue-property-decorator,Typescript,Vue.js,Vuejs2,Vue Class Components,Vue Property Decorator,在thread中,我学习了如何链接父组件和子组件v-model。最重要的是: ---父模板: --子模板: --儿童脚本: 计算:{ 本地值:{ 得到(){ 返回此.value; }, 设置(本地值){ 这是。$emit('input',localValue); }, }, }, 不幸的是,我无法将其重新写入语法。以下代码既不起作用,也不应起作用: 导出默认类TextEditor扩展Vue{ @Prop({type:String,required:true})私有只读值!:String; pr

在thread中,我学习了如何链接父组件和子组件
v-model
。最重要的是:

---父模板:
--子模板:
--儿童脚本:
计算:{
本地值:{
得到(){
返回此.value;
},
设置(本地值){
这是。$emit('input',localValue);
},
},
},
不幸的是,我无法将其重新写入语法。以下代码既不起作用,也不应起作用:

导出默认类TextEditor扩展Vue{
@Prop({type:String,required:true})私有只读值!:String;
private get localValue():字符串{
返回此.value;
}
私有集localValue(newValue:string){
这是.$emit(“输入”,newValue);
}
}
问题的答案不适用于vue组件属性,因为属性是只读的。因此我无法编写
this.value=newValue

直接
值的使用有问题##

@组件({
组成部分{
编辑器实现:CK_Editor.component
}
})
导出默认类TextEditor扩展Vue{
@Prop({type:String,required:true})私有只读值!:String;
@发出(“输入”)
专用onInput(值:字符串):void{
控制台日志(“检查点”);
console.log(this.value);
}
}
假设初始值为空字符串

  • 输入“f”
  • 日志将是“检查点”
  • 输入“a”
  • 日志将是
    检查点“f”
  • 输入“d”
  • 日志将是“检查点”“fa”

  • 依此类推。

    目前,您似乎从父级获取了一个输入值,然后更改该值,并将该值发送回父级。这似乎是一种反模式

    请试试这个

    您的EditorImplementation组件将类似于

    
    
    @属性({默认值:'})只读值!:string
    我认为这不是最好的解决方法。你不应该直接改变道具。为什么不能直接将
    道具放入模板中呢。托尼,谢谢你的回答。使用
    EditorImplementation(:value=“value”@input=“(value)=>{onInput(value)}”)
    ,在
    @Emit(“input”)私有onInput(value:string)中:void{console.log(this.value);}
    我总是使用前面的
    值获得输出,而不是实际值。例如。在第一次输入时,
    仍然是空字符串。正常吗?嗨,请编辑帖子并添加此功能以提高可读性。@Tony,收到,完成。谢谢你的回答。因此,
    文本编辑器
    中不会随
    本地值
    而改变,不是吗?文档中是否对此进行了解释?使用
    localValue
    ,您可以使用v-model更改文本输入的值(这确保了双向绑定)。您可以看到有关如何在自定义组件上使用v-model的更多信息(这就是
    编辑实现
    组件。显示了v-model如何与html元素一起使用。关于道具更改,您可以从技术上更改子组件中的道具,但更改值(在子组件中更改)如果父组件中的值发生更改,则将被忽略,这就是为什么不鼓励这样做。在这种情况下,您似乎希望将值从子组件发送到父组件。使用v-model,您可以更改子组件中输入的文本的值,并将值发送到父组件,而无需担心abo好的,谢谢你的解释!我接受了你的回答。