【发布时间】:2014-07-28 02:54:04
【问题描述】:
我迭代一个对象并尝试打印对象的值,有时它可以工作,有时它不能。这主要发生在 Chrome 和 Firefox 中,IE9 正常工作。 不知何故,车把生成的功能在工作时和不工作时会有所不同。两次的数据都是一样的。当我使用日志助手打印 {{this}} 时,我可以在控制台中看到正确的值打印。
如果您想知道什么是下划线,它是一个简单的助手,即使我删除它也没有任何不同。
我的应用程序使用 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;
}"
【问题讨论】:
-
我已将 HB 版本更新为 2.0 (alpha),看看这是否能解决我的问题。现在有时从quotedString: function(str) { in line 2761 str变得未定义。
-
我在一个简单的小提琴中重新创建了这个问题。 link 在 Chrome 版本 36 中测试
标签: javascript backbone.js requirejs handlebars.js