I cannot fire observes function when was created object in Controller Array

My code:

Model

App.Meeting = Em.Object.extend({
    id: null,
    name: null,
    type: null,
    proposes: null
 });
App.Meeting.reopen({
    proposedChanged: function() {
       //some do
    }.observes('proposes')
});

Controller

App.meetingsController = Ember.ArrayController.create({
    content: [],
    loadList: function(){
        var me = this;
        $.getJSON(url,function(data){

            if(data.status == 0){
                $(data.meetings).each(function(index,value){
                    var m = App.Meeting.create(value)
                    me.pushObject(m);    
                });

            }else{
                alert('Error loading content');
            }               
        });
    },

});

App.meetingsController.loadList();

When i run application Controller has get JSON data and created App.Meeting with that data, but observer not fire

有帮助吗?

解决方案

While I was creating a jsbin to play with @Darshan Sawardekar got it right, so now you have to answers to play with :)

The important code:

App.meetingsController = Ember.ArrayController.create({
  content: [],
  loadList: function(){
    var me = this;
    $.getJSON(url, function(data){
      if(data.status == 0){
        $(data.meetings).each(function(index, value){
          var m = App.Meeting.create();
          m.set('id', value.id);
          m.set('name', value.name);
          m.set('type', value.type);
          m.set('proposes', value.proposes);

          me.pushObject(m);
        });
      } else {
         alert('Error loading content');
      }               
    });
  }
});

Hope it helps.

EDIT

See here for a working jsbin that shows the concept.

其他提示

I think observers fire when you do meeting.set('proposes', 'value'). They don't fire inside a create call. You could modify your create to retouch proposes. This might work,

var m = App.Meeting.create(value);
m.set('proposes', value.proposes);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top