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".
上发布了问题
多亏了这个我找到了一些东西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。
对不起我的英语。
所以我在获取元数据时遇到了非常奇怪的问题。我的应用程序显示书签列表。我已经设置了一个无限滚动系统。它完美地工作。要设置这个无限滚动,我在我的控制器中有一个加载更多书签的操作:
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".
上发布了问题
多亏了这个我找到了一些东西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。