2

backbonejsのfetchメソッドのjsonpCallback関数名はどうやって設定するのですか? 問題に加えて、requireJS も使用しているため、グローバル関数を持たず、AMD パターンに従おうとしています。

jquery から自動生成されたメソッド名を使用できない理由は、使用している API の開発者が、キャッシュの理由からコールバック メソッドに静的な名前を付けたいからです。

サンプルコード

define([
    'jquery',
    'underscore',
    'backbone',
    'marionette',
    'paginator',
    'models/item'], function($, _, Backbone, Marionette, Paginator, modelItem) {
    'use strict';

        var PaginatedCollection = Paginator.requestPager.extend({ 
            model: modelItem,

            paginator_core: {
               jsonpCallback : 'callbackFunc',

                type: 'GET',
                cache: true,

                dataType: 'jsonp',

            },      
            callbackFunc : function(data) {
                console.log(data);
            }

        });

        return PaginatedCollection;

    });

エラーメッセージ

TypeError: callbackFunc は関数ではありません

4

2 に答える 2

1

結果を (ブラウザやサーバーにも) キャッシュしたいので、options.cacheparam も設定する必要があります。

また、パラメータはそうではありjsonpCallbackませんjsonp

同期オーバーライド関数は次のようになります。

sync: function (method, model, options) {
    options.timeout = 10000; // required, or the application won't pick up on 404 responses
    options.dataType = 'jsonp';
    options.jsonpCallback = 'callbackFunc';
    options.cache = 'true';
    return Backbone.sync(method, model, options);
}

注意: BackboneJS v1.0、0.9 以前ではテストされていません

于 2013-07-09T17:20:30.520 に答える