Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Javascript 作为Vue.js中父对象属性的绑定方法_Javascript_Vue.js - Fatal编程技术网

Javascript 作为Vue.js中父对象属性的绑定方法

Javascript 作为Vue.js中父对象属性的绑定方法,javascript,vue.js,Javascript,Vue.js,我有时会遇到这样的情况:能够将方法绑定为对象属性而不是直接的Vue方法会更好。例如,而不是: 能够做以下事情会很好: …并仅从Vue类中公开格式化程序,而不是为我要绑定的每个案例编写一个瘦包装器方法。这会产生很多感觉不必要的样板文件 有可能这样做吗?如果是这样的话,类代码会是什么样子?在数据中放置一个带有方法的对象对我来说是错误的。我的答案信息有限。所以我要做很多假设 太长,读不下去了 您可以让该方法返回一个对象并在模板中执行它,或者使用一个返回对象的计算方法。两者都将提供您想要的功能

我有时会遇到这样的情况:能够将方法绑定为对象属性而不是直接的Vue方法会更好。例如,而不是:


能够做以下事情会很好:


…并仅从Vue类中公开格式化程序,而不是为我要绑定的每个案例编写一个瘦包装器方法。这会产生很多感觉不必要的样板文件


有可能这样做吗?如果是这样的话,类代码会是什么样子?在
数据中放置一个带有方法的对象对我来说是错误的。

我的答案信息有限。所以我要做很多假设

太长,读不下去了 您可以让该方法返回一个对象并在模板中执行它,或者使用一个返回对象的计算方法。两者都将提供您想要的功能

示例(道具是函数) 这可能看起来像(以下是我的假设):


导出默认值{
/*其他选择*/
方法:{
/*其他方法*/
格式化程序(){
常量格式=(值)=>新的Intl.NumberFormat('nl-nl',{style:'currency',currency:'EUR'})。格式(值);
常量解析器=(值)=>parseFloat(值);
返回{
货币:{
格式,
解析器,
},
};
}
},
}
使用上述方法,您确实可以在模板中执行以下操作:


您的props
formatter
parser
将是两个函数,在返回的对象中定义

少用样板 为了避免更多的样板文件,您还可以执行以下操作:


导出默认值{
/*其他选择*/
方法:{
/*其他方法*/
格式化程序(){
const formatter=(value)=>new Intl.NumberFormat('nl-nl',{style:'currency',currency:'EUR'})。format(value);//使用与道具'formatter'相同的名称
常量解析器=(值)=>parseFloat(值);
返回{
货币:{
格式化程序,//使用与道具“格式化程序”相同的名称
解析器,
},
};
}
},
}
在模板中:


这将把
formatter.currency.formatter
绑定到您的
formatter
prop,它还将
formatter.currency.parser
绑定到您的
parser
prop

值位于父组件中 此外,如果
MyInput
组件中的道具需要是值(而不是函数),并且需要解析/格式化的值是父级中数据选项中的值:


导出默认值{
/*其他选择*/
数据(){
返回{
/*其他数据*/
myNumberValue:'9001'//是的,超过9000
} 
},
方法:{
/*其他方法*/
格式化程序(){
const value=this.myNumberValue;
const formatter=new Intl.NumberFormat('nl-nl',{style:'currency',currency:'EUR',})。格式(值);
const parser=parseFloat(值);
返回{
货币:{
格式化程序,
解析器,
},
};
},
},
};


这回答了你的问题吗?

我觉得不错。作为任何其他参考。它抛出了什么?不确定您的用例和/或动机是什么,但您可能想研究mixin。@Tim-您将如何使用mixin来解决这个问题?是的,这非常有用,谢谢!