AngularJs的延迟加载列表记住数据
AngularJs lazy loaded list remember data
我遇到了一个加载图书列表太慢的问题。最初我加载了10本书。如果用户向下滚动,我将加载接下来的10本书。
假设用户现在在"page"4上。然后他点击了第35本书来获取它的细节。在返回到列表后,他只看到前10本书,并且必须重做所有的惰性加载。
是否有任何"缓存"或存储的可能性来避免这种情况?非常感谢你的提示!
(更新)谢谢你的回复!
<路线/strong>
.state('app.books.list',{
...
...
resolve: {
books : function(bookFactoryBook) {
return booksFactoryBook.getList({page : 1});
}
}
})
.state('app.books.details',{
// just loads detail
})
ctrl(控制器作为语法)
function bookControllerList(_books, ....) {
vm = this;
vm.books = _books;
......
// lazy loader just appends new data on vm.books
// after loading was successful
/**
* init lazy loader
*
* @desc initialize lazy-loader for books
* @return {void}
* @private
*/
function _initLazyLoader() {
if(_isLazyLoadingEnabled() === false) {
return;
}
// config lazy loader
var mapper = {
data : 'books', // vm.books
isEnabled : 'lazyLoadingEnabled',
indicatorId : 'lazyLoadingIndicatorId',
onDataLoaded : _afterLazyLoading
};
if(booksFactoryLazyLoader.setup(vm, mapper) === false) {
// failed to initialize lazy loader - disable feature
vm.lazyLoadingEnabled = false;
} else {
vm.lazyLoadingEnabled = true;
}
}
/**
* after lazy loading
*
* @desc manages data manipulation after lazy loading
* @param books - {Array} - new loaded data to manipulate
* @return {void}
* @private
*/
function _afterLazyLoading(books) {
// user logged in?
if(authFactorySession.isAuthorized() === true) {
// try to flag favorites in received books
books = _addFavoriteFlags(books);
}
// append data to vm
vm.books = vm.books.concat(books);
}
}
可能是控制器语法的问题吗?或者如何延长作用域/vm对象的生命周期?
如果我改变状态的顺序,并将它们连接为父/子(app.books。List和app.books.list.detail)不会改变任何东西。
谢谢你的提示
在看不到代码的情况下,包含列表引用的控制器在查看图书的详细信息后被重新初始化。如果你把它保留下来,或者把书的列表移到一个有更长的寿命的范围,你应该没问题。
相关文章:
- 要求输入在数据列表中
- 使用JavaScript在IE9中获取数据列表选项
- 使用AJAX创建数据列表
- 从要使用Protractor测试的服务器异步加载的动态数据列表的列表
- 为什么数据列表选项的id返回空值
- 如何调用更改事件,例如在 HTML 数据列表上选择
- 在 d3 中为数据列表创建元素
- asp.net 数据列表中的跟踪标签 ID
- 通过遍历JSON文件来填充数据列表选项
- PHP:从数据列表中打印(循环困难)
- 无法获取数据列表中项目的值
- 从不同页面收集数据以形成数据列表,并将它们一起发送
- 检查给定的数据列表中是否存在表单字段值
- Jquery调用数据列表选项卡或输入
- 按调用顺序返回由Ajax/HTTP生成的数据列表
- 如何根据输入值可靠地计算数据列表中的匹配数
- 如何在angularJs中使用数据列表
- 如何检测从数据列表中选择时更改的输入字段
- 将文件转换为数组并使用数据列表和选项标签为自动完成文本框添加数组元素
- Zend Form 1.x使用html5数据列表标签