Backbone.js 主干更新视图上的引用,始终基于状态更改还是作为eventhandler的副作用?
我承认这个问题很神秘 我正在寻找基于GUI事件更新视图的参考/最佳实践。 基本上,我看到了两种不同的方法:Backbone.js 主干更新视图上的引用,始终基于状态更改还是作为eventhandler的副作用?,backbone.js,Backbone.js,我承认这个问题很神秘 我正在寻找基于GUI事件更新视图的参考/最佳实践。 基本上,我看到了两种不同的方法: 每个视图更改都是对模型更改的反应 Gui事件 viewhandler(自定义或双向绑定库) 基于视图更新模型 视图在已更新的模型上定义了一个listenTo,该模型将被调用 做我们想做的任何事情 直接在viewhandler中进行DOM更改吗 Gui事件 viewhandler(自定义或双向绑定库) 基于视图更新模型 做我们想做的任何事情 视图在已更新的模型上定义了一个liste
- 基于视图更新模型
listenTo
,该模型将被调用- 基于视图更新模型
- 做我们想做的任何事情
listenTo
,该模型将被调用第一种方法对我来说似乎是最干净的:在更改DOM和流之前,它可以在模型上使用验证规则。然而,我找不到任何好的参考来支持这一点。这里通常认为的最佳实践是什么 我不知道在这个主题上,互联网的整体协议是什么,但是在一个具有复杂视图的相当大的主干应用程序上工作,第一种方法是被证明是最可维护的 一种方法是,正如您所知,主干网的视图和主干网的路由器在某种程度上分担了标准MVC(比如Rails)中实际控制器的工作负载。这意味着,在视图中,您通常具有将GUI事件(单击X)转换为模型更改(do Y)的逻辑,以及将模型更改(Y之后的新状态)转换为DOM更改的逻辑。这并不意味着逻辑需要在同一个地方,这是两个不同的东西。您的模型可能会在多个视图中共享,您需要视图做出反应,而不管更改来自何处。您还可以等待服务器回答任何问题,因此DOM更新无论如何都会在回调中 我最近经常使用的一种模式是使用一个_renderUpdate()来更新DOM,让用户知道他的操作已经考虑到了(在触发更改的对象附近添加一个微调器),但我让事件在服务器返回新模型后进行实际的重新渲染 在简单的情况下,没有什么可以阻止您使用第二种方法,但是随着应用程序的增长,您将非常高兴拥有不仅仅是一个可以擦除所有内容(包括子视图)的render(),并且您将看到在view->model(这是控制器的角色)之间有一个清晰的分隔和model->view以允许更大的灵活性