单击 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
我仍在使用 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