gpt4 book ai didi

javascript - 管理 Backbone.js 页面转换

转载 作者:行者123 更新时间:2023-11-30 18:24:10 25 4
gpt4 key购买 nike

我知道这是一个非常普遍讨论的话题,但我找不到任何能准确回答我的问题的话题:)

我目前正在从事 Backbone.js 项目。在路由器方面,我不在路由器内实例化 View 、模型或集合,而是仅将路由器用作处理状态的一种方式 - 路由器调用我的自定义 Controller 对象上的方法。

然后我的 Controller 为索引、显示等实例化不同的 View 、模型和集合。这一切都很好而且花花公子。

我只是对如何处理页面转换有点费劲。我已经阅读了所有关于管理僵尸等的精彩文章,并且知道无论发生什么我都必须有一些旧 View 的清理系统(我目前正在使用 Derick Bailey 在博客中提到的 .close() 方法)。

如果我要从#show 到#index,或者任何其他路线改变,我明白只实例化新的、新鲜的 View 、模型等是有意义的——这就是我几乎在每个教程中都能看到。当然,确保清理旧的。

但是,如果我已经在 #show 上,并且我路由到另一个 #show 页面,那么我想要的所有 View 等都已经实例化和呈现了。我只想更改模型和集合的数据。

所以我想我的问题是为什么我没有看到人们非常多地重复使用 View 。在我的脑海里,我在想如果你已经在你想要的页面上,那么只更新该 View 链接到的模型/集合的 url 或 urlRoot 并重新获取会更有意义。然后这将触发一个重置事件,所有需要订阅的 View 都可以订阅并重新呈现自己。

但是,正如我所说,我没有看到有人这样做。仅仅是因为这是一个非常糟糕的主意吗?如果有人在做这样的事情,您如何处理跟踪“可刷新”模型和集合?

谢谢!

最佳答案

我认为这在很大程度上取决于您如何使用 View 以及它们的复杂程度/规模。

如果您的 View 非常简单,那么重新渲染整个 View 并用新标记替换现有 HTML 通常会更容易(这也可能比遍历 DOM 以更改必要的部分更快。但是,如果您有更复杂的 View ,只有少量信息发生变化,最好听取适当的属性更改事件(例如 _bind('change:name', this.nameChanged,this)),然后只更新 DOM 的那一部分。

请记住,虽然约定是使用呈现元素的 render 方法,但您可以轻松地将额外的刷新事件应用于仅 refresh 某些部分,然后您可以只交换模型(如@jackwanders 建议的那样)并调用 refresh 方法。

关于javascript - 管理 Backbone.js 页面转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com