Ember-数据在获取元数据时出现奇怪的问题

Ember-data weird problems when getting metadata

对不起我的英语。

所以我在获取元数据时遇到了非常奇怪的问题。我的应用程序显示书签列表。我已经设置了一个无限滚动系统。它完美地工作。要设置这个无限滚动,我在我的控制器中有一个加载更多书签的操作:

loadMore: function() {

    var self = this;
    var meta = this.store.metadataFor('bookmark');

    if(meta.nextPage != null) {
        self.set('isLoadingMore', true);

        self.store.find('bookmark', {page: meta.nextPage})
            .then(function(bookmarks) {
                self.set('isLoadingMore', false);
            }).catch(function(err) {
                self.set('isLoadingMore', false);
            });

    }
    else {
        self.set('isLoadingMore', false);
    }

}

所以这个功能完美运行。如果我滚动它加载下一页书签。这是 js 控制台:

XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=3".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=4".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=4".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=5".

但我想做的是在我的模板中使用这些 meteData。所以我在我的控制器中创建了一个计算 属性:

metaData: Ember.computed('model.isFulffiled', function() {
            return this.store.metadataFor('bookmark') 
        }),

因为我已经完成了我可以访问我的模板中的元数据,但是当调用 loadMore 函数时元数据似乎没有更新。所以 loadMore 函数总是加载初始请求的元数据中给定的下一页。

 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".
jquery.js:8625 XHR finished loading: GET "http://localhost:8000/api/bookmarks?page=2".

我也在 discuss.emberjs.com

上发布了问题

多亏了这个我找到了一些东西link

显然我应该使用:

Ember.copy(store.metadataFor('user'))

避免这些问题。所以我在我的控制器中做了一个计算 属性 像这样:

metaData : function() {
    return Ember.copy(this.store.metadataFor('bookmark'));
}.property('content.@each'),

它现在可以工作了,我可以像这样访问我的模板中的元数据:

Total : {{metaData.total}} Current page: {{metaData.currentPage}}

我不知道这样做是否正确,所以如果我有其他解决方案,请随时post。