我有一个日期/时间格式化帮助程序,但是当基础属性更改时,它生成的内容不会更新。这不足为奇,但是有人知道如何在助手中产生绑定(bind)吗?

我像这样调用助手

{{timestamp created_at}}

...这是助手本身:
Handlebars.registerHelper('timestamp', function(context, options) {
  var formatter        = options.hash['format'] ? options.hash['format'] : 'hh:mm a MM-DD-YYYY';
  var original_date    = Ember.getPath(this, context); // same as this.get(context) ?
  var parsed_date      = moment(original_date);
  var formatted_date   = parsed_date.format(formatter);

  return new Handlebars.SafeString("<time datetime=" + original_date +">" + formatted_date + "</time>");
});

最佳答案

现在可以使用公共(public)Ember API创建绑定(bind)的Handlebars帮助器。

Handlebars.registerBoundHelper('timestamp', function(date, options) {
  var formatter        = options.hash['format'] ? options.hash['format'] : 'hh:mm a MM-DD-YYYY';
  var parsed_date      = moment(date);
  var formatted_date   = parsed_date.format(formatter);

  return new Handlebars.SafeString("<time datetime=" + date +">" + formatted_date + "</time>");
});

传递给帮助程序的参数将已经解析,并且每当路径更改时都会再次调用该帮助程序。

关于ember.js - 写一个可以产生有限结果的助手?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8837958/

10-13 03:21