单击 collection 标题后 Backbonejs 渲染 collection

Backbonejs rendering collection upon click on collection title

我仍在使用 backbonejs,因为我发现 bootstrap 基于 API 的新微型 API 网站非常容易和快速。

问题是关于 collection 在 collection 组点击时加载和渲染的最佳实践。

假设我有静态品牌列表。单击品牌后,我开始获取 collection 并在获取成功后呈现 collection.

当用户单击未处理上一次点击的品牌时会发生问题,因此会发生 2 collections og 两个品牌已加载和呈现。为了 "cancel" 或忽略第一次提取并只呈现用户点击的最后一个提取,最好的处理方法是什么?

我发现解决方案是在处理请求之前停用品牌列表,但这在用户体验方面很烦人,因为用户可能想立即点击另一个而不是等待结果(如果他 miss-clicked例如)

来自 Backbone.fetch 的基础 xhr 对象 return 具有取消当前请求 xhr.abort() 的能力。

当用户点击并提取集合时,保存 return 值。

var xhr = myCollection.fetch()

xhr 具有告诉您请求当前状态的属性。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState

如果用户再次单击并导致集合在另一个请求仍在处理时获取,只需询问 xhr 是否正在请求中。如果是,则中止并继续当前的提取,并重新分配 xhr 对象。

示例代码:

function userClickedSomething(){
    if(xhr.readyState > 0 && xhr.readyState < 4)
        xhr.abort()
    xhr = myCollection.fetch()
}

如何存储对 xhr 对象的引用由您决定。

更多详情:Is it possible to stop Backbone "read" requests