我正在使用Marionette.js
制作应用程序。
模型事件未触发如果我在Attribute
函数中更改view.initialize
值,就像以下方式一样。
var ChartsView = Marionette.CompositeView.extend({
initialize:function(){
this.model.set({"currentJson":""},{silent:true});
this.model.set({"currentJson":"test"});
},
modelEvents:{
"change:currentJson":"settingOtherAttributesInSameModel"
},
settingOtherAttributesInSameModel:function(){
console.log("This is Testing");
}
});
在实例创建时,我正在传递模型对象,就像以下一样。
chartsViewObj=new ChartsView({el:$('#plannerTablePlace'),model:chartsModelObj});
我不知道,为什么model event
无效。
我没找到,我错了。
任何人都可以帮助我。
答案 0 :(得分:1)
您的问题是在delegateEvents
函数之后调用绑定视图事件的initialize
函数。因此,当你这样做时:
initialize:function(){
this.model.set({"currentJson":""},{silent:true});
this.model.set({"currentJson":"test"});
}
设置属性并触发change
事件但视图事件尚未绑定。
因此,如果您想要触发事件,请执行以下操作:
chartsViewObj=new ChartsView({el:$('#plannerTablePlace'),model:chartsModelObj});
chartsModelObj.set({"currentJson":""},{silent:true}); // this will not trigger the event because of 'silent:true'
chartsModelObj.set({"currentJson":"test"});