I’ve an Ember.Controller, with setup-code in the init function. In reality this code makes AJAX requests.
But when I create two instances of this controller, they are always equals. Why, and what can I do again this?
I’ve made this simple example, which shoud write Test 1 Test 2 into the console. Bit its writing Test 2 twice.
App = Em.Application.create({});
App.TestController = Em.Controller.extend({
content: Em.Object.create({
info: null,
}),
init: function() {
if(this.id == 1)
{
this.content.set('info', "Test 1");
}
if(this.id == 2)
{
this.content.set('info', "Test 2");
}
},
});
var c1 = App.TestController.create({id: 1});
var c2 = App.TestController.create({id: 2});
console.log('C1: ' + c1.get('content').get('info'));
console.log('C2: ' + c2.get('content').get('info'));
You have to set
contentvalue ininit, otherwise, the value set at class declaration time will be shared by all instances.See http://codebrief.com/2012/03/eight-ember-dot-js-gotchas-with-workarounds/