Handsontable无法设置numeric类型?编辑时TypeError报错求助
Handsontable 数字列编辑时出现「Cannot read property 'culture' of undefined」错误的解决方法
我之前做Handsontable数据编辑器的时候,刚好碰到过和你一模一样的问题,这个错误的根源其实很清晰:
你当前用的是Handsontable的基础版脚本(handsontable.min.js),这个版本不包含国际化(i18n)相关的模块,而你在account_budget列的配置里用了numericFormat.culture参数,Handsontable找不到对应的文化规则定义,直接就抛出了「Cannot read property 'culture' of undefined」的错误。
给你两个可行的解决办法,选哪个都可以:
办法1:换成包含全模块的完整版脚本
把HTML里的Handsontable脚本换成完整版的handsontable.full.min.js,它内置了所有国际化支持,不用额外加别的:
<!-- 替换原来的脚本和样式引用 --> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handsontable/0.35.0/handsontable.full.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/handsontable/0.35.0/handsontable.full.min.css" rel="stylesheet">
换完之后,你原来stuff.js里的numericFormat配置不用改,直接就能正常用了。
办法2:单独引入对应文化的语言包
如果不想加载完整版这么大的脚本,也可以单独加个en-US的语言包,放在基础版脚本后面就行:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handsontable/0.35.0/handsontable.min.js"></script> <!-- 新增这一行语言包引用 --> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handsontable/0.35.0/languages/en-US.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/handsontable/0.35.0/handsontable.min.css" rel="stylesheet">
这样Handsontable就能找到en-US的文化定义,数字格式化功能就能正常工作了。
额外小提示
要是你不需要指定特定的文化规则,也可以直接把culture: 'en-US'这行删掉,Handsontable会用默认的格式化逻辑,这样就算用基础版脚本也不会报错:
{ type:'numeric', numericFormat: { pattern: '$0,0.00' // 移除 culture: 'en-US' 这一行 }, }
内容的提问来源于stack exchange,提问作者Tinker
相关产品推荐
相关产品推荐

