以下方法一是摘抄自网友:高坦的博客 | Tan's Blog,仅供自己学习使用!!!
方法二是自己在过滤器处强制转换传过来的参数为数字
方法一:
问题描述:
在使用VUE过滤器的时候,遇到控制台报错 : vue.esm.js?efeb:628 [Vue warn]: Error in render: "TypeError: Cannot read property 'toFixed' of undefined"
查到undefined是在过滤器器中报出错误的moneyFilters.js
报错原因是因为过滤器执行了两次.
第一次是在后台没有传递过来数据的时候,执行了过滤器函数一次.而这个时候并没有数据,传递进过滤器函数的为undefined.报错是在这个时候产生的
第二次是后台传递数据,渲染数据之后,执行了一次过滤器函数.
解决办法是在过滤器中进行一次判断传递进来的参数.如果传递参数为 undefined 或者其他隐式转换为false的值,跳出函数,不再执行.
代码:
export function toMoney(money) {
if (!money) {// 在这里进行一次传递数据判断.如果传递进来的为空值,返回其空字符串.解决其问题
return '';
}
return money.toFixed(2);
}
方法二:
export function toMoney(money) {
let newMoney = Number(money) // 在这里进行一次传递数据判断.如果传递进来的为空值,返回其空字符串.解决其问题
return newMoney.toFixed(2);
}