模特活动在木偶中不起作用

时间:2014-02-07 15:10:46

标签: javascript backbone.js marionette

我正在使用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无效。

我没找到,我错了。

任何人都可以帮助我。

1 个答案:

答案 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"});