Ember在创建对象时如何观察火焰(观察已在模型中设置)

时间:2013-07-18 09:42:48

标签: ember.js observers

在Controller Array

中创建对象时,我无法触发观察功能

我的代码:

模型

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

控制器

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();

当我运行应用程序控制器获取JSON数据并使用该数据创建App.Meeting时,观察者不会触发

2 个答案:

答案 0 :(得分:2)

当我创建一个jsbin与@Darshan一起玩时,Sawardekar说得对,所以现在你必须得到答案:)

重要代码:

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');
      }               
    });
  }
});

希望它有所帮助。

修改

请参阅此处了解显示概念的工作jsbin

答案 1 :(得分:1)

我认为当你meeting.set('proposes', 'value')时,观察者会开火。他们不会在create电话中开火。您可以修改您的创建以修饰建议。这可能有效,

var m = App.Meeting.create(value);
m.set('proposes', value.proposes);