Javascript AngularJs延迟加载列表记住数据
我面临着一个懒散加载的书籍列表的问题。最初我装了10本书。如果用户向下滚动,我将加载接下来的10本书 假设用户现在在“第4页”。然后,他点击第35本书来了解它的细节。回到列表后,他只看到前10本书,不得不重新加载所有的延迟加载 是否有任何“缓存”或存储的可能性来避免这种情况?谢谢你的任何提示 [更新] 谢谢你的回复 路线Javascript AngularJs延迟加载列表记住数据,javascript,angularjs,caching,lazy-loading,Javascript,Angularjs,Caching,Lazy Loading,我面临着一个懒散加载的书籍列表的问题。最初我装了10本书。如果用户向下滚动,我将加载接下来的10本书 假设用户现在在“第4页”。然后,他点击第35本书来了解它的细节。回到列表后,他只看到前10本书,不得不重新加载所有的延迟加载 是否有任何“缓存”或存储的可能性来避免这种情况?谢谢你的任何提示 [更新] 谢谢你的回复 路线 .state('app.books.list',{ ... ... resolve: { books : function(bookF
.state('app.books.list',{
...
...
resolve: {
books : function(bookFactoryBook) {
return booksFactoryBook.getList({page : 1});
}
}
})
.state('app.books.details',{
// just loads detail
})
ctrl(控制器作为语法)
控制器的语法是否有问题?或者,如何延长scope/vm对象的生命周期
如果我更改状态的顺序,并将它们作为父/子(app.books.list和app.books.list.detail)连接,则不会更改任何内容
感谢您在没有看到您的代码的情况下提供任何提示,在查看本书的详细信息后,将重新初始化包含列表引用的控制器。如果您保持这一点,或者将书籍列表移动到使用寿命更长的范围内,您应该会没事。在没有看到代码的情况下,在查看书籍的详细信息后,将重新初始化包含列表引用的控制器。如果您保持这种状态,或者将书籍列表移动到使用寿命更长的范围内,您应该不会有问题。您是如何实现延迟加载的?你能把一些最小的plnkr/JSFIDLE放在一起吗?你是如何实现延迟加载的?你能把一些最小的plnkr/JSFIDLE放在一起吗?你是如何实现延迟加载的?你能把一些最小的plnkr/JSFIDLE放在一起吗?
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);
}
}