Backbone.js-更改期间的模型集

Backbone.js-更改期间的模型集,backbone.js,Backbone.js,我想在“更改”事件期间执行model.set(…)-某些模型属性必须同步:例如,我有一个可以覆盖多个产品的预算,但如果我更改预算,则必须更新产品的数量,反之亦然。我已尝试禁用“更改”事件(即model.off('change');),然后在model.set(…)之后启用它,即model.on('change',callbackFunction),但是我仍然调用更改事件处理程序/回调 在已更改的处理程序/回调中更新模型的最佳方法是什么?您可以传递带有静默标志的选项对象 this.model.se

我想在“更改”事件期间执行model.set(…)-某些模型属性必须同步:例如,我有一个可以覆盖多个产品的预算,但如果我更改预算,则必须更新产品的数量,反之亦然。我已尝试禁用“更改”事件(即model.off('change');),然后在model.set(…)之后启用它,即model.on('change',callbackFunction),但是我仍然调用更改事件处理程序/回调


在已更改的处理程序/回调中更新模型的最佳方法是什么?

您可以传递带有静默标志的
选项
对象

this.model.set({someKey:25}, {silent: true});

将不会有
更改
事件

您可以传递带有静默标志的
选项
对象

this.model.set({someKey:25}, {silent: true});

将不会有
更改
事件

您可以传递带有静默标志的
选项
对象

this.model.set({someKey:25}, {silent: true});

将不会有
更改
事件

您可以传递带有静默标志的
选项
对象

this.model.set({someKey:25}, {silent: true});

不会有任何
更改
事件

您可以控制模型的设置并对此保持“沉默”。因此,如果要设置某个内容并使其不调用change,则需要添加
silent:true
,例如:

model.set('budget', '$12.34', { silent: true })
此外,您还可以指定
更改
。比如说,你的另一个模型只需要听“预算总额”。您只需聆听预算总额的变化:

modelOne.listenTo( modelTwo, 'change:budgetTotal', function( modelTwo, value ){ 
  this.set('budgetTotal', value ); 
});

您可以控制模型的设置并对此保持“沉默”。因此,如果要设置某个内容并使其不调用change,则需要添加
silent:true
,例如:

model.set('budget', '$12.34', { silent: true })
此外,您还可以指定
更改
。比如说,你的另一个模型只需要听“预算总额”。您只需聆听预算总额的变化:

modelOne.listenTo( modelTwo, 'change:budgetTotal', function( modelTwo, value ){ 
  this.set('budgetTotal', value ); 
});

您可以控制模型的设置并对此保持“沉默”。因此,如果要设置某个内容并使其不调用change,则需要添加
silent:true
,例如:

model.set('budget', '$12.34', { silent: true })
此外,您还可以指定
更改
。比如说,你的另一个模型只需要听“预算总额”。您只需聆听预算总额的变化:

modelOne.listenTo( modelTwo, 'change:budgetTotal', function( modelTwo, value ){ 
  this.set('budgetTotal', value ); 
});

您可以控制模型的设置并对此保持“沉默”。因此,如果要设置某个内容并使其不调用change,则需要添加
silent:true
,例如:

model.set('budget', '$12.34', { silent: true })
此外,您还可以指定
更改
。比如说,你的另一个模型只需要听“预算总额”。您只需聆听预算总额的变化:

modelOne.listenTo( modelTwo, 'change:budgetTotal', function( modelTwo, value ){ 
  this.set('budgetTotal', value ); 
});


更改已完成,但仍在调用处理程序。我指的是其他内容。。在testMdl.on('change',function(){…})中;执行testMdl.set(…);=>在更改期间,我希望设置模型的一些其他属性,而不是引发“更改”事件。现在,我得到了一个无限循环,因为set-cause-change会导致调用更改处理程序/回调。在没有循环的情况下,您可以使用更具体的事件
change:someKey
并设置其他
someKey2
,如果我在someKey1上调用set-on-change:someKey2,我会得到相同的循环。因此,在更改过程中无法更新模型?{silent:true}-他应该关闭所有与“set”方法更改有关的事件。。。只需在change event handler中使用它,change is处理程序仍在被调用。我指的是其他东西。。在testMdl.on('change',function(){…})中;执行testMdl.set(…);=>在更改期间,我希望设置模型的一些其他属性,而不是引发“更改”事件。现在,我得到了一个无限循环,因为set-cause-change会导致调用更改处理程序/回调。在没有循环的情况下,您可以使用更具体的事件
change:someKey
并设置其他
someKey2
,如果我在someKey1上调用set-on-change:someKey2,我会得到相同的循环。因此,在更改过程中无法更新模型?{silent:true}-他应该关闭所有与“set”方法更改有关的事件。。。只需在change event handler中使用它,change is处理程序仍在被调用。我指的是其他东西。。在testMdl.on('change',function(){…})中;执行testMdl.set(…);=>在更改期间,我希望设置模型的一些其他属性,而不是引发“更改”事件。现在,我得到了一个无限循环,因为set-cause-change会导致调用更改处理程序/回调。在没有循环的情况下,您可以使用更具体的事件
change:someKey
并设置其他
someKey2
,如果我在someKey1上调用set-on-change:someKey2,我会得到相同的循环。因此,在更改过程中无法更新模型?{silent:true}-他应该关闭所有与“set”方法更改有关的事件。。。只需在change event handler中使用它,change is处理程序仍在被调用。我指的是其他东西。。在testMdl.on('change',function(){…})中;执行testMdl.set(…);=>在更改期间,我希望设置模型的一些其他属性,而不是引发“更改”事件。现在,我得到了一个无限循环,因为set-cause-change会导致调用更改处理程序/回调。在没有循环的情况下,您可以使用更具体的事件
change:someKey
并设置其他
someKey2
,如果我在someKey1上调用set-on-change:someKey2,我会得到相同的循环。因此,在更改过程中无法更新模型?{silent:true}-他应该关闭所有与“set”方法更改有关的事件。。。只需在更改事件处理程序中使用它