满足条件时停止 vue filter / javascript
Stop vue filter / javascript when condition is met
Javascript / Vue n00b。想要编写一个过滤器来格式化一个 1 - 3 位数字的值。我想将 1 位数字更改为“#00X”,将 2 位数字更改为“#0XX”,将 3 位数字更改为“#XXX”。到目前为止我有这个:
//Vue Filter
Vue.filter('number_filter', function (value){
if(value.length === 1){
value = value.toString()
return '#00' + value;
}else if(value.length === 2){
value = value.toString()
return '#0'+ value;
}else{
value = value.toString()
return '#' + value;
}
});
过滤器将采用 'X' 和 return '#X',因为它不会在满足第一个条件时中断。我能做什么?
你可以简化它:
Vue.filter('number_filter', function (value){
value = value.toString()
if(value.length === 1){
return '#00' + value;
}
if(value.length === 2){
return '#0'+ value;
}
return '#' + value;
});
例如:
Vue.filter('number_filter', function (value){
return "#"+"0".repeat(3 - value.length)+value.toString();
});
这里有一个post关于如何获取位数的方法。
此外,根据您的问题,除非存在阻止某人输入包含超过 3 位数字的数字的叠加条件,否则您的输出结果可能会类似于“#3051”。您将需要另一个 else-if 来检查位数 === 3.
您可以使用 String.prototype.padStart()
并避免 if/else
:
Vue.filter('number_filter', function (value){
return '#' + value.toString().padStart(3, '0');
});
在您的原始代码中,value
是 Number
类型,您正在检查 length
属性 Number
永远是 undefined
,您需要先将其转换为 string
,然后检查值:
Vue.filter('number_filter', function (value){
value = value.toString();
if(value.length === 1) {
return '#00' + value;
} else if(value.length === 2) {
return '#0'+ value;
} else {
return '#' + value;
}
});
String
方法 padStart
可以满足您的要求。它将添加 0
2 位数字,其余部分将按原样返回。
Vue.filter('number_filter', function (value){
return '#' + value.padStart(3, 0)
});
Javascript / Vue n00b。想要编写一个过滤器来格式化一个 1 - 3 位数字的值。我想将 1 位数字更改为“#00X”,将 2 位数字更改为“#0XX”,将 3 位数字更改为“#XXX”。到目前为止我有这个:
//Vue Filter
Vue.filter('number_filter', function (value){
if(value.length === 1){
value = value.toString()
return '#00' + value;
}else if(value.length === 2){
value = value.toString()
return '#0'+ value;
}else{
value = value.toString()
return '#' + value;
}
});
过滤器将采用 'X' 和 return '#X',因为它不会在满足第一个条件时中断。我能做什么?
你可以简化它:
Vue.filter('number_filter', function (value){
value = value.toString()
if(value.length === 1){
return '#00' + value;
}
if(value.length === 2){
return '#0'+ value;
}
return '#' + value;
});
例如:
Vue.filter('number_filter', function (value){
return "#"+"0".repeat(3 - value.length)+value.toString();
});
这里有一个post关于如何获取位数的方法。
此外,根据您的问题,除非存在阻止某人输入包含超过 3 位数字的数字的叠加条件,否则您的输出结果可能会类似于“#3051”。您将需要另一个 else-if 来检查位数 === 3.
您可以使用 String.prototype.padStart()
并避免 if/else
:
Vue.filter('number_filter', function (value){
return '#' + value.toString().padStart(3, '0');
});
在您的原始代码中,value
是 Number
类型,您正在检查 length
属性 Number
永远是 undefined
,您需要先将其转换为 string
,然后检查值:
Vue.filter('number_filter', function (value){
value = value.toString();
if(value.length === 1) {
return '#00' + value;
} else if(value.length === 2) {
return '#0'+ value;
} else {
return '#' + value;
}
});
String
方法 padStart
可以满足您的要求。它将添加 0
2 位数字,其余部分将按原样返回。
Vue.filter('number_filter', function (value){
return '#' + value.padStart(3, 0)
});