Javascript AngularJs延迟加载列表记住数据

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

我面临着一个懒散加载的书籍列表的问题。最初我装了10本书。如果用户向下滚动,我将加载接下来的10本书

假设用户现在在“第4页”。然后,他点击第35本书来了解它的细节。回到列表后,他只看到前10本书,不得不重新加载所有的延迟加载

是否有任何“缓存”或存储的可能性来避免这种情况?谢谢你的任何提示

[更新] 谢谢你的回复

路线

.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);

    }

}