抱歉我的英文。
所以我在获取metedata时遇到了一些奇怪的问题。我的应用程序显示书签列表。我已经设置了无限滚动系统。它工作得很好。要设置此无限滚动,我在我的控制器中有一个动作,它会加载更多书签:
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函数时,metada似乎没有被更新。因此,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".
上发布了这个问题
答案 0 :(得分:1)
我感谢这个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}}
我不知道这是否是正确的方法,所以如果我有其他解决方案随时发布它。