Brython转换JS代码初始化Jasonette未生成元素问题咨询
问题成因
Brython在把Python字典传递给JavaScript函数时,默认不会转换为原生JavaScript对象,而是封装为Brython内部的PyDict实例。Jasonette的Jason函数只能识别原生JS对象,无法解析传入的PyDict结构,因此会静默失败,不生成任何页面元素,该问题和键名中的$符号无关。
解决方案
有两种常用方案可以解决类型不匹配的问题:
方案1:通过JSON序列化/反序列化转换
先将Python字典序列化为JSON字符串,再解析为原生JS对象,兼容性最好:
<script type="text/python"> from browser import window Jason = window.Jason # 转换Python字典为原生JS对象 config = window.JSON.parse(window.JSON.stringify({'$cell': True})) app = Jason(config, {}) </script>
方案2:使用Brython内置的to_js方法转换
Brython 3.7及以上版本提供了to_js工具,可以直接将Python容器转换为对应的原生JS对象,性能更高:
<script type="text/python"> from browser import window from browser.javascript import to_js Jason = window.Jason config = to_js({'$cell': True}) app = Jason(config, {}) </script>
内容的提问来源于stack exchange,提问作者Rebs
相关产品推荐
相关产品推荐

