2013-04-10 73 views
2

你如何爲backbonejs的獲取方法設置的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; 

    }); 

錯誤消息

類型錯誤:callbackFunc不是一個函數

+0

你能告訴我們你的代碼嗎? Jsonp是否支持Backbone或您正在使用的其他庫的一部分? – 2013-04-10 22:49:30

+0

[WhatHaveYouTried.com](http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – 2013-04-10 23:01:36

+0

添加示例代碼。只是顯示我有問題的部分。 – 2013-04-11 00:02:48

回答

1

覆蓋你取到請求傳遞迴調方法名。

fetch: function(options) { 
    options || (options = {}); 
    var data = (options.data || {}); 
    options.dataType = 'jsonp'; 
    options.jsonp = 'callbackFunc'; 

    return Backbone.Collection.prototype.fetch.call(this, options); 
} 
1

由於要緩存的結果(在瀏覽器中,也許在服務器上爲好),你還需要設置options.cache PARAM。

另外的參數是jsonpCallbackjsonp

這是你的同步過程功能應該是什麼樣子:

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); 
} 

NB:BackboneJS 1.0,在0.9沒有測試或更早