2016-02-01 18 views
0

哪种事件方法可以帮助捕获对在木偶对象中定义的设置为'变量'的值的更改。听取Marionette对象中变量的变化?

e.g:

var LoginModule = Marionette.Object.extend({ 

    initialize: function(options) { 
     this.state = 'pending'; 
    }, 

    init: function(model) { 
     model.fetch({validate:true}) 
     .done(function() { 
      this.state = 'success'; 
     }) 
     .fail(function(res){ 
      console.log(res); 
      this.state = 'failed'; 
     }); 

     return model; 
    } 
}); 

在这里,我想检测改变变量this.state。是否有选项可以触发一次,如listenToOnce?

用法:

var loginM = new LoginModule(); loginM.init(model);

回答

2

编辑: 我想我找到了更好的解决方案为您服务。尝试如下。首先,像这样改变你的init方法。

init: function(model) { 
     model.fetch({validate:true}) 
     .done(function() { 
      this.state = 'success'; 
      this.triggerMethod('state:changed'); 
     }) 
     .fail(function(res){ 
      console.log(res); 
      this.state = 'failed'; 
      this.triggerMethod('state:changed'); 
     }); 

     return model; 
    } 

之后,你能赶上事件state:changed象下面这样:

this.on("state:changed", function(){ 
    //handle your changed state 
}); 
+0

感谢@vlad。当我像下面那样绑定时,回调不会被解雇。 'var loginM = new LoginModule(); ('change',function(){console.log('changed fired')}); loginM.init(model);' 是否有任何具体原因找到? – peterkr

+0

我更新了主要答案,请检查它 –

+0

谢谢@vlad按预期工作。 – peterkr