【问题标题】:Bound helper taking parameter as string not value of property绑定助手将参数作为字符串而不是属性值
【发布时间】:2013-07-13 07:41:52
【问题描述】:

我是 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 值的字符串)字符串“开始时间”。什么给了?

作为输入字符串的结果,moment.js 尝试优雅地处理它并输出Sat, 12:00 AM(也就是说,它不知道无意义的字符串要代表什么日期)。

相比之下,{{start_time}} 引用工作正常并输出结果,例如:2013-07-09 08:00:06

【问题讨论】:

    标签: ember.js handlebars.js


    【解决方案1】:

    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");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2010-09-28
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多