我已经为我的一个使用框架的项目更新了dojo。在最近的更新后,我注意到一个奇怪的错误' Uncaught string.substitute找不到密钥"!actionBarTemplate"在模板'和dojo加载失败。我尝试在线研究错误并从源文件中跟踪,但无法找出原因。如果您有任何人知道为什么会发生这种情况或遇到类似情况,请告诉我。谢谢!
答案 0 :(得分:0)
如果dijit/_TemplatedMixin
无法找到模板中存在但未在窗口小部件中显示的密钥,则会抛出此错误,正好在_stringRepl
中调用的buildRendering
函数中1}}一个小部件。
以下是返回此功能的内容:
return string.substitute(tmpl, this, function(value, key){
if(key.charAt(0) == '!'){ value = lang.getObject(key.substr(1), false, _this); }
if(typeof value == "undefined"){ throw new Error(className+" template:"+key); }
if(value == null){ return ""; }
请注意throw new Error
部分?
现在,包含密钥!actionBarTemplate
的唯一模板是
- dijit \ templates \ TooltipDialog.html
- dijit \ templates \ Dialog.html
那么,你有一个使用这个模板但没有属性actionBarTemplate
的小部件吗?可能会将属性actionBarTemplate: ""
添加到小部件来修复您的问题。
请注意,如果您的模板中有${title}
,那么最终会询问this.title
是否存在,因此,请确保至少有title: null
< / p>
希望有所帮助