2012-06-20 2 views
0

Я пытаюсь ввести разбивку на страницы, используя requestPager.Confused with Backbone.js Paginator

Проблема: После настройки collection, который проходит Backbone.Paginator.requestPager, я освежил веб-страница и консоль JavaScript бросили ошибку:

Uncaught TypeError: Object function (a){return new m(a)} has no method 'result' backbone.paginator.js:678

я очень новый для позвоночника и не уверен, что пошло неправильно. Это потому, что я использовал fetch(), который появился на скриншоте об ошибке ниже? Я также заметил, что на бэкэнд не было отправлено GET запросов. Что случилось, и как я должен это исправить? Благодаря!

JS код

// Collection 

window.ListingCollection = Backbone.Paginator.requestPager.extend({ 
    model: Listing, 

    paginator_core: { 
     type: 'GET', 
     dataType: 'jsonp', 
     url: 'api/listings' 
    }, 

    paginator_ui: { 
     firstPage: 0, 
     currentPage: 0, 
     perPage: 10, 
     totalPages: 10 
    }, 

    server_api: { 
     '$filter': '', 
     '$per_page': function() { return this.perPage; }, 
     '$current_row': function() { return this.currentPage * this.perPage; }, 
     '$order_by': 'listing_id' 
    }, 

    parse: function(response){ 
     this.totalPages = Math.floor(response.total_rows/this.perPage); 
    } 

}); 

JS код

// Router 
var AppRouter = Backbone.Router.extend({ 
    routes: { 
     '': 'listings', 
     'listings': 'listings' 
    }, 

    listings: function() { 
     var self = this; 

     // Load initial search results 
     this.listingList = new ListingCollection(); 
     this.listingList.fetch({ 
      success: function() { 
       self.listingListView = new ListingListView({ model: self.listingList }); 
       $('#listing_list table').append(self.listingListView.render().el); 
      } 
     }); 
     this.listingFilterView = new ListingFilterView(); 
    } 
}); 

Скриншот ошибки в консоли JavaScript enter image description here

enter image description here

JS Включает

<!-- JavaScript --> 
<script src="assets/js/lib/jquery-1.7.1.min.js"></script> 
<script src="assets/js/lib/underscore-min.js"></script> 
<script src="assets/js/lib/backbone-min.js"></script> 
<script src="assets/js/lib/backbone.paginator.js"></script> 
<script src="assets/js/lib/bootstrap.js"></script> 
<script src="assets/js/lib/bootstrap-datepicker.js"></script> 
<script src="assets/js/app.js"></script> 

ответ

4

Вероятно, вы используете старую версию подчёркивания. Я использую 1.3.1 и не имеет метода result(). Загрузите их новую продукцию version 1.3.3 - у нее есть result().

+0

Отлично! Я обновился до 1.3.3 и эта ошибка исчезла! Теперь я получаю сообщение об ошибке с помощью функции '_.template', это не похоже на' <% if (<% = address_2%>) {%>, <% = address_2%><%}%> 'больше! – Nyxynyx

+0

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

+0

Я использую механизм шаблонов по умолчанию, который поставляется с backbone.js/underscore.js. Я рассмотрю Handlebars, спасибо! – Nyxynyx