Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Ember Handlebars Transform Helper
Ember.HandlebarsTransformView = Ember.View.extend(Ember.Metamorph, {
rawValue: null,
transformFunc: null,
value: function(){
var rawValue = this.get('rawValue'),
transformFunc = this.get('transformFunc');
return transformFunc(rawValue);
}.property('rawValue', 'transformFunc').cacheable(),
render: function(buffer) {
var value = this.get('value');
if (value) { buffer.push(value); }
needsRerender: function() {
Ember.HandlebarsTransformView.helper = function(context, property, transformFunc, options) {
options.hash = {
rawValueBinding: property,
transformFunc: transformFunc
return Ember.Handlebars.ViewHelper.helper(context, Ember.HandlebarsTransformView, options);
Ember.Handlebars.registerHelper('format', function(property, options) {
var transformFunc = function(value) {
return (value && value.format) ? value.format() : value;
return Ember.HandlebarsTransformView.helper(this, property, transformFunc, options);
// This one is untested but should work
Ember.Handlebars.registerHelper('datetime', function(property, options) {
var format = options.hash.format,
transformFunc = function(value) {
return (value && value.format) ? value.format(format) : value;
return Ember.HandlebarsTransformView.helper(this, property, transformFunc, options);
* Example:
* var now = moment().add('days', 9);
* {{datetime now format="dddd, MMMM Do YYYY"}}
* Friday, January 13th 2012

I have been using this snippet for quite some time, and I'm currently trying to upgrade to the 1.0 pre code. I've got everything else working except this bit of code, and I haven't been able to figure out what has changed, or even if this code is still needed. In line 1 I've tried mixing in Ember._Metamorph and Ember._MetamorphView but to no avail. Any suggestions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment