This Week in Ember.js

– By Bradley Priest

Only a few more days left, I hope everyone's had a great 2012, while you get ready for the New Year, here's what's been happening in Ember.

New Router API

The new router API has been merged! We've spent a lot of time incorporating feedback about our first iteration of the router, and we think you're going to really love what we've come up with. It helps you get started quickly, and eliminates the old API that forced you to write unwieldy nested objects.

There is a short walkthrough that describes the thinking behind the new API. Full documentation should be landing this week.

Embedded Records

After a massive refactor of the Ember Data library, it now fully supports embedded records, amongst other goodies.

As always, check out BREAKING_CHANGES for information about updating your apps.

DS.JSONSerializer

In the last post we talked about the changes in the serialization API's renaming methods to remove the JSON specificity whilst adding hooks to manage relationship dirtiness.

We've now fully extracted all the JSON semantics from DS.Serializer into it's own class. The DS.JSONSerializer is a subclass of DS.Serializer which implements the JSON-specific semantics. The RESTAdapter now uses the JSONSerializer by default so if you are using that there is no need to change anything in your application.

After some feedback we've also renamed toData/fromData to serialize/deserialize for a more friendly API.

As always, check out BREAKING_CHANGES for more information.

Bound handlebars helpers

Ember.Handlebars just got a little bit smarter. Ember.Handlebars.registerBoundHelper provides a way to create your own bound custom helpers.

Example:

Ember.Handlebars.registerBoundHelper('capitalize', function(value) {
  return value.toUpperCase();
});

which can be used in your templates as follows:

{{capitalize name}}

Ember.Object.create behavior change

The new behavior will call computed property setters instead of overwriting them. We suggest using Ember.Object.extend() to create classes and use create to initialize properties on your instance. The old behavior is available via createWithMixins. This change should increase object creation performance by 2x.

Other changes of note

reject and rejectProperty methods have been added to Ember.Enumerable.

Ember.none and Ember.empty have been renamed to Ember.isEmpty and Ember.isNone to keep with the Ember Boolean naming convention.

EmberCamp

The very first Ember Camp in SF is happening on the 15th February 2013. Sign up here, be quick, tickets are limited.

Looking to learn Ember? There's also an Introduction to Ember event in the week leading up to Ember Camp.

Enjoy your holiday, Bradley Priest @bradleypriest