Javascript 两个视图一个模型,如何防止视图不必要的更新/重新提交

Javascript 两个视图一个模型,如何防止视图不必要的更新/重新提交,javascript,model-view-controller,backbone.js,redux,Javascript,Model View Controller,Backbone.js,Redux,上下文: 两个视图A和B连接到同一模型: 两者都可以更改模型状态 两者都需要在模型上更新其UI 改变 问题: 当A触发模型更改时,如何防止视图A重新渲染自身,而当B更改模型时,如何仍然允许A更新 暂定解决方案: 传递对分派事件的视图的引用,类似于event.target PS:我们没有使用React.js或不可变数据。因此,总是根据视图状态重新渲染或比较模型可能代价高昂且容易出错。我们试图遵循redux模式,使用一个包含整个应用程序状态的模型。我不确定主干网是否鼓励这样做。听起来好像视图A中

上下文: 两个视图A和B连接到同一模型:

  • 两者都可以更改模型状态
  • 两者都需要在模型上更新其UI 改变
问题: 当A触发模型更改时,如何防止视图A重新渲染自身,而当B更改模型时,如何仍然允许A更新

暂定解决方案: 传递对分派事件的视图的引用,类似于event.target


PS:我们没有使用React.js或不可变数据。因此,总是根据视图状态重新渲染或比较模型可能代价高昂且容易出错。我们试图遵循redux模式,使用一个包含整个应用程序状态的模型。

我不确定主干网是否鼓励这样做。听起来好像视图A中发生了某种情况,将导致视图A和视图B都重新渲染,但您在不同的位置处理视图A的重新渲染,因此不希望在模型更改事件中重新渲染

如果是这种情况,我认为您需要一个视图来监听模型较小部分的更改,如(从)

或者,您可以在更改模型时使用
{silent:true}
选项使更改事件静音,然后直接在视图B上调用渲染。不过,我认为这不是一个好的解决方案

book.on({
  "change:author": authorPane.update,
  "change:title change:subtitle": titleView.update,
  "destroy": bookView.remove
});