Backbonejs在点击集合标题时呈现集合

时间:2017-01-30 18:42:43

标签: javascript backbone.js backbone-collections

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

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

假设我有静态品牌列表。点击品牌后我开始获取该集合,并在获取结束时成功获取该集合。

当用户点击没有处理过上一次点击的品牌时会出现问题,所以会发生两个品牌,两个品牌都已加载并呈现。解决这个问题的最佳方法是什么?取消"取消"或者只是忽略第一次获取而只渲染用户点击的最后一次?

我发现解决方案只是在处理请求之前停用品牌列表,但它明智地解决了UX问题,因为用户可能希望立即点击另一个不等待结果的人(例如,如果他错过了点击)< / p>

1 个答案:

答案 0 :(得分:0)

xhr返回的基础Backbone.fetch对象可以取消当前请求xhr.abort()

当用户点击并收集集合时,请保存返回值。

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