Latest Ember.js + Data
by pangratz666
HTML
<script src="http://cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js"></script>
<script src="https://github.com/downloads/pangratz/ember.js/ember-latest.js"></script>
<script src="https://github.com/downloads/pangratz/data/ember-data-latest.js"></script>
<script type="text/x-handlebars" >
</script>
JavaScript
App = Ember.Application.create();
var methodsToDefine = [
{checkerName: "standoutHolderChecked", methodToCall: "toggleParentStandout"},
{checkerName: "holderPaddingChecked", methodToCall: "toggleParentPadding"},
{checkerName: "holderMarginChecked", methodToCall: "toggleParentMargin"}
];
App.Stalker = Ember.Mixin.create({
init: function() {
this._super();
methodsToDefine.forEach(function(config) {
// add an observer for checkerName - a change should call methodToCall
Ember.addObserver(this, config.checkerName, this, config.methodToCall);
}, this);
},
willDestroy: function() {
this._super();
// since we are good citizens, we remove the observers when the object is destroyed
methodsToDefine.forEach(function(config) {
Ember.removeObserver(this, config.checkerName, this, config.methodToCall);
}, this);
}
});
var myObj = Ember.Object.create(App.Stalker, {
toggleParentStandout: function() {
console.log("toggleParentStandout called");
},
toggleParentPadding: function() {
console.log("toggleParentPadding called");
},
toggleParentMargin: function() {
console.log("toggleParentMargin called");
}
});
myObj.set('standoutHolderChecked', 42);
myObj.set('holderPaddingChecked', 'Buster');