【问题标题】:Confused with Backbone.js Paginator对 Backbone.js 分页器感到困惑
【发布时间】:2012-06-22 18:26:21
【问题描述】:

我正在尝试使用backbone.js paginator pluginrequestPager 引入分页。

问题:设置扩展Backbone.Paginator.requestPagercollection后,我刷新了网页,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 控制台中的错误截图

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>   

【问题讨论】:

    标签: javascript jquery backbone.js pagination underscore.js


    【解决方案1】:

    您可能正在使用旧版本的下划线。我使用 1.3.1,它没有 result() 方法。下载他们的新作品version 1.3.3 - 它有result()

    【讨论】:

    • 太棒了!我更新到 1.3.3 并且该错误消失了!现在_.template 函数出现错误,它似乎不再喜欢&lt;% if(&lt;%= address_2 %&gt;){%&gt;, &lt;%= address_2 %&gt;&lt;%}%&gt;
    • 你使用什么模板引擎?语法看起来有些混乱......我使用 Handlebars,它很棒。
    • 我使用backbone.js/underscore.js自带的默认模板引擎。我会研究把手,谢谢!!
    • 明白了。没用过,不好意思。在任何情况下,在 Handlebars 中这个模板应该是这样的:{{#if address_2}}, {{address_2}}{{/if}}。相当整洁。
    • 我不知道正确的语法,但我会试试这个:&lt;% if (address_2) {%&gt;, &lt;%= address_2 %&gt;&lt;% } %&gt;。我的意思是,不要在 scriptlet 中使用 &lt;%= %&gt;
    猜你喜欢
    • 2021-11-09
    • 2012-09-18
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    相关资源
    最近更新 更多