Comparing `reopenClass` with `create`
A simple test to compare adding methods and properties to ember class and their instances using `reopenClass` or `create` method.
by Aras Balali Moghaddam
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0.beta6/handlebars.min.js"></script>
<script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-latest.js"></script>
<script type="text/x-handlebars" >
</script>
CoffeeScript
#this was a good source to understand differences between Class.reopenClass, Class.reopen, and instance.reopen
#http://stackoverflow.com/questions/10269372/ember-js-how-does-reopenclass-work
window.App = Ember.Application.create()
App.Pet = Ember.Object.extend(
whoAmI: () ->
return "My name is #{this.get('name')} and I am a #{this.get('color')} #{this.get('type')}."
)
App.PetsController = Ember.ArrayController.extend()
App.PetsController.reopen(
reopenClassFind: (name) ->
@findProperty("name", name)
)
App.petsController = App.PetsController.create(
content: [
App.Pet.create(
id: 1
type: "cat"
color: "white"
name: "Zooby"
),
App.Pet.create(
id: 2
type: "cat"
name: "Shasta"
color: "orange"
),
App.Pet.create(
id: 3
name: "Larry"
type: "loach"
color: "brown"
)
]
createFind: (name) ->
@findProperty("name", name)
)
petOne = App.petsController.createFind "Larry"
console.log "who are you?", petOne.whoAmI()
petTwo = App.petsController.reopenClassFind "Shasta"
console.log "who are you?", petTwo.whoAmI()