我迭代一个对象并尝试打印对象的值,有时它可以工作,有时则不然。这主要发生在Chrome和Firefox中,IE9正在运行。 不知何故,车把生成的功能在工作时和不工作时会有所不同。两个时间的数据都是相同的。当我使用日志帮助程序打印{{this}}时,我可以在控制台中看到正确的值打印。
如果你想知道什么是underscoretodash,它是一个简单的帮助,即使我删除它没有任何不同。
我的应用程序使用Backbone,Marionette,Handlebars和requireJs。
如果有人遇到过这样的问题或知道如何解决这个问题,那将会非常有帮助。
数据结构如下
var errors = {
"custom_agent": "You can't be an agent.",
"min_length": "Occupation must be at least 2 characters."
};
车把代码如下
{{#each error_messages}}
<span class="error-{{format @key "underscoretodash"}}">{{this}} {{log this}}</span>
{{/each}}
Handlebar生成的函数如下。
工作时。
*** "Invalid Branch." handlebars.js:469
*** prog: "function program8(depth0,data) {
var buffer = "", helper, options;
buffer += "\n <span class=\"error-"
+ escapeExpression((helper = helpers.format || (depth0 && depth0.format),options={hash:{},data:data},helper ? helper.call(depth0, (data == null || data === false ? data : data.key), "underscoretodash", options) : helperMissing.call(depth0, "format", (data == null || data === false ? data : data.key), "underscoretodash", options)))
+ "\">"
+ escapeExpression((typeof depth0 === functionType ? depth0.apply(depth0) : depth0))
+ "</span>\n ";
return buffer;
}"
何时不起作用
*** "Invalid Branch." handlebars.js:468
*** prog: "function program8(depth0,data) {
var buffer = "", stack1, helper, options;
buffer += "\n <span class=\"error-"
+ escapeExpression((helper = helpers.format || (depth0 && depth0.format),options={hash:{},data:data},helper ? helper.call(depth0, (data == null || data === false ? data : data.key), "underscoretodash", options) : helperMissing.call(depth0, "format", (data == null || data === false ? data : data.key), "underscoretodash", options)))
+ "\">";
if (helper = helpers.undefined) { stack1 = helper.call(depth0, {hash:{},data:data}); }
else { helper = (depth0 && depth0.undefined); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
buffer += escapeExpression(stack1)
+ "</span>\n ";
return buffer;
}"
答案 0 :(得分:3)
确定{{this}}的类型似乎是HB的错误。
解决方法是,您可以更改
{{this}}
到
{{./this}}
答案 1 :(得分:0)
我猜{{this}}
取决于`toString&#39;给定对象的输出。为stringfiy添加一个帮助器并尝试{{stringify this}}。它可能会给你更多的见解。