2014-02-07 30 views
2

我使用Marionette.js來製作應用程序。模型事件不在Marionette中工作

模型事件未觸發如果我在view.initialize函數中更改Attribute函數,就像下面的方式一樣。

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

您的問題是綁定視圖事件的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"}); 
+0

如何解決this.can你解釋清楚。 – user3279058

+0

@ user3279058我已經更新了我的答案。 –