在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时,观察者不会触发
答案 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);