2015-01-23 2 views
0

Извините за мой английский.Ужасные данные странные проблемы при получении метаданных

Так что у меня действительно странные проблемы с извлечением 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') 
     }), 

Так как я сделал, что я могу получить доступ к метаданным в моем шаблоне, но metada, похоже, не был обновлен, когда функция loadMore называется. Таким образом, loadMore fonction всегда загружает следующую страницу, указанную в метаданных исходного запроса.

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

ответ

1

я нашел что-то благодаря этому link

по-видимому, я должен использовать:

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

, чтобы избежать этих проблем. Таким образом, я сделал вычисленное свойство в моем контроллере так:

metaData : function() { 
    return Ember.copy(this.store.metadataFor('bookmark')); 
}.property('[email protected]'), 

И теперь работать я могу получить доступ метаданные в шаблоне, как это:

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

Я не знаю, если это правильный способ сделать это, поэтому, если у меня есть другое решение, не стесняйтесь публиковать его.

Смежные вопросы