2012-01-12 16 views
13

我有一个日期/时间格式助手,但它产生的内容不会在基础属性更改时更新。这并不令人意外,但是有谁知道如何在助手中生成绑定?写一个产生绑定结果的助手?

我调用这样的帮手......

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

这个小小的更新只是为了提到绑定助手已经承诺掌握。 请参阅https://github.com/emberjs/ember.js/commit/46469831e7fe22d43b5dcfdf7ff60bd7000aa9de – 2012-12-14 08:01:36

回答

27

现在可以创建使用公共灰烬API势必把手帮手。

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

传递给助手的参数已经被解析,并且每当路径改变时,助手都会被再次调用。

+0

太酷了!它增加了额外的灵活性。我个人有“本地化”的想法。一个帮助器“t”来转换一个字符串,当字符串数组改变时它会自动更新。真棒。会试一试。 – nembleton 2012-12-31 08:47:22

+0

请注意,不能与块帮助器一起使用:http://stackoverflow.com/questions/18005111/custom-handlebars-helper-parameter-is-not-resolved – 2013-08-30 16:41:33

+1

如果你需要一个块帮手,你可能应该是使用一个组件。 – 2013-09-06 06:30:20

10

这是不幸的,比我想创建一个更复杂具有绑定内容的自定义助手。这里有一个例子,彼得Wagenet写道:https://gist.github.com/1563710

我会游说这变得更容易。

+0

废话比我想象的要复杂得多......我很想看看它变得更简单。 – 2012-01-13 06:27:11

+0

同意。这里肯定应该有些糖。 – ghempton 2012-02-21 22:38:14

+0

请注意,最新版本的Ember破解了这个,因为Ember.Metamorph已被重命名为Ember._Metamorph。这里有一个更新的要点:https://gist.github.com/2588802 – rlivsey 2012-05-03 19:58:31

0

不知道这是否适用于此特定问题,但我也在视图中创建了助手,并希望在Ember.js视图中的数据更改时更新这些值。我解决这个问题的方法是编写一个观察者关于我想要更改的值,并使用jQuery来更新特定值。

例如(在CoffeeScript中):

... 

attrObserver: Ember.observer(() -> 
    $("#attrId").text(this.get("attr")) 

... 
相关问题