Ember Objects part 1
At the heart of Ember.js is ember objects, they're behind just about everything in the framework. If you're looking to improve your Ember know-how, understanding the
Ember.Object
is essential.Ember.Object
enables us to define new classes to work with, eg:
We can also create a sub-class from any existing class by calling
extend
thus, our Person
class above is simply a sub-class of Ember.Object
.
This is reflected in Ember when we create our new models, we
extend
the existing Model
class:
If we wanted to create new instances of our
Person
object we utilise create
instead, like so:
And then to create new instances of our model, we call
createRecord
, this is because a few extra bits are going on under the hood.Get Set
If you're familiar with Ruby, you can override existing class methods here too, and like Ruby, we can access the underlying implementation of those class methods with a call to
_super()
.
Ember objects make use of
get
and set
as opposed to other frameworks for accessing and writing to its properties. It uses these methods to get around performance issues with multiple DOM updates and bindings.
For example, when
set
is called, Ember will check to see if the value we're setting our property to is different to the existing value. If so, Ember knows to go ahead and trigger any updates to bindings, observers or computed properties.
One additional feature with
get
is that it gives us access to unknownProperty
, this is kind of similar to method_missing
in Ruby, in that it allows our object to respond to requests it hasn't explicitly defined. Computed Properties
Computed properties are one of the major selling points of Ember. They can be setup like so:
In the above example, we create a
Room
object that has a computed property of area
, this computed property depends on width
and height
, so if one of those attributes changes, the value of area changes as a result.
Additionally, as opposed to say Angular, it also means in our views we can simply use the following:
No need for
area()
, which makes it much easier to update your application, should you require a computed property rather than an attribute.
You can also declare computed properties with some handy shorthand macros:
You additionally don't have to supply the
property
declaration, which can make these easier to write.
For more of these, see the documentation at Ember.js
So far we've covered how to create objects and instantiate them, how to work with attributes and computed properties. In the next post we'll be looking at Observers, some more complex computed property methods and bindings.
No comments:
Post a Comment