我是Handlebars(和Ember)的新手,所以这可能是我犯了一个悲惨的错误,但我感到很困惑,我希望其他人能看到这个。
我有一个简单的把手绑定帮助器(注意:我正在使用 moment.js 并且加载了相应的JS):
Handlebars.registerHelper('time', function(context) {
console.log("time: " + context);
var aMomentInTime = new moment(context,["YYYY-MM-DD", "YYYY-MM-DD HH:mm:ss"]);
return aMomentInTime.format("ddd, h:mmA");
});
在视图模板的#each
块中,我有以下内容:
{{#each Controller}}
<p>
{{time start_time}}<br/>
{{start_time}}
</p>
{{/each}}
其中start_time
在模型中定义为DS.attr("date")
。在第一行我期望基于start_time的值的格式化日期,遗憾的是console.log指示而不是start_time的日期对象(或者甚至是具有start_time值的字符串)我只是得到了字符串“start_time”。是什么给了什么?
由于字符串进入,moment.js尝试优雅地处理它并输出Sat, 12:00 AM
(也就是说,它不知道无意义的字符串代表什么日期)。
相比之下,{{start_time}}
引用可正常工作并输出结果,例如:2013-07-09 08:00:06
。
答案 0 :(得分:5)
registerHelper
不支持绑定。使用registerBoundHelper
或helper
。
Ember.Handlebars.helper('time', function(context) {
console.log("time: " + context);
var aMomentInTime = new moment(context,["YYYY-MM-DD", "YYYY-MM-DD HH:mm:ss"]);
return aMomentInTime.format("ddd, h:mmA");
});