Javascript VueJS动态获取计算属性
我需要计算以Javascript VueJS动态获取计算属性,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,我需要计算以calculateSum字符串开头的computed属性的总和 我不知道该怎么做,因为我无法使用this.computed 因此,我的方法/尝试是: getSubTotal(){ var computed_names = []; var computed_names_filtered = computed_names.filter(x => {return x.startsWith('calculateSum')}) return _.sum(compu
calculateSum
字符串开头的computed
属性的总和
我不知道该怎么做,因为我无法使用this.computed
因此,我的方法/尝试是:
getSubTotal(){
var computed_names = [];
var computed_names_filtered = computed_names.filter(x => {return x.startsWith('calculateSum')})
return _.sum(computed_names_filtered.map(x => eval(x+'()'))
}
你知道怎么做吗?你可以使用
这个['computed\u name']
动态访问它们
由于组件实例是一个对象:
var computed_names = Object.keys(this);
var computed_names_filtered =
computed_names.filter(x => {return x.startsWith('calculateSum')})
_.sum(computed_names_filtered.map(x => this[x]))
请注意,调用computed属性时不使用()
,但如果要调用方法,可以执行此['method\u name']()
例如:
//忽略以下两行,它们只是在“运行代码段”中禁用警告
Vue.config.devtools=false;
Vue.config.productionTip=false;
新Vue({
el:“#应用程序”,
计算:{
op1(){
返回1;
},
op2(){
返回2;
},
op3(){
返回23;
},
总数(){
返回['op1','op2','op3'].map(o=>this[o]).reduce((acc,curr)=>acc+=curr,0)
}
},
})
{{total}}
也许这可以帮助您获得计算的列表:
this.$options.computed