我的html代码就是这样====>

<span class="custom-super-script" data-language="en" v-fraction-superscriptor="1,310.66">

我的vue指令是====>

Vue.directive("fraction-superscriptor", function (el, binding) {

let number = !isNaN(parseFloat(binding.value)) ? parseFloat(binding.value).toFixed(2) : 0;

number = parseFloat(number).toLocaleString(el.dataset.language || "nl-nl", { useGrouping: false, minimumFractionDigits: 2 });
});


但是我总是得到310.66的值,而不是1310.66。当我检查绑定时,我得到了。

def: {bind: ƒ, update: ƒ}
expression: "1,310.66"
modifiers: {}
name: "fraction-superscriptor"
rawName: "v-fraction-superscriptor"
value: 310.66


如何解决这个问题?它只会对大于1000的数字产生问题。

最佳答案

v-fraction-superscriptor="1,310.66"中,"1,310.66"被评估为javascript表达式。逗号(,)是有效的JavaScript operator,这就是为什么它在计算表达式后返回“ 310”的原因。
在您的情况下,将其作为这样的字符串传递,您将获得正确的值。

v-fraction-superscriptor="'1,310.66'"

07-21 12:09