问题背景
在使用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);
}