如何使用Mustache.js渲染嵌套数据元素?解决控制台提示“无法找到txt.general_1.value”的问题
txt.general_1.value的问题 你的示例代码逻辑上是完全成立的——我本地引入Mustache库运行这段代码时,能正常渲染出预期的HTML内容。所以报错Can't find txt.general_1.value in [object Object]大概率是实际业务场景中的数据或环境问题,给你几个排查和解决的方向:
先确认数据结构的准确性
在调用Mustache.render之前,先打印数据的具体结构,确保txt.general_1.value确实存在:console.log(data.txt); // 确认txt对象包含general_1属性 console.log(data.txt.general_1?.value); // 用可选链操作符避免报错,同时查看值是否存在如果这里打印不出预期的内容,说明你的业务数据里
txt.general_1可能不存在,或者键名有拼写错误(比如写成了general-1、General_1之类的),这时候需要修正数据结构或模板中的键名。尝试用Section语法替代点语法
有时候Mustache的点语法在某些场景下可能出现兼容性问题(比如旧版本的库),你可以改用Section标签来嵌套访问属性,看看是否能正常渲染:<div class="{{row}}"> <p class="{{column}}"> {{#txt}} {{#general_1}} {{value}} {{/general_1}} {{/txt}} </p> </div>检查Mustache版本
确保你使用的是Mustache的最新稳定版本(比如v4.x及以上),旧版本可能存在嵌套属性访问的Bug。你可以通过console.log(Mustache.version)查看当前版本,若版本过低,建议更新到最新版。排查数据是否被意外修改
检查在var data = json_obj['all'][0];之后,有没有其他代码修改了data或data.txt的结构,比如异步操作覆盖了数据,或者其他函数修改了对象属性。
如果按照以上步骤排查后还是无法解决,可以把实际业务中data的打印结果贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者Tree

