0

我不知道如何使 Backbone.sync 适合我的情况。这就是为什么我仍然在我的项目中使用这个通常的 Ajax-Request:

$.ajax({
    url: request,
    status: status,
    type: 'GET',
    dataType: 'json',
    beforeSend: function (req) { req.setRequestHeader("Authorization", auth) },
    success: function (data, status) {
           //update the model
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
        //do stuff
    }
});

我需要向请求标头添加 base64 编码授权并更新模型。我从服务器获得的数据包含比我的模型需要的更多信息。这就是为什么我不能将模型直接引用到这样的 url:

var MyApp.myModel = Backbone.Model.extend({
url: '/someResourceUrl'
});
MyApp.myModel.fetch();

我需要做某事。喜欢:

var MyApp.myModel = Backbone.Model.extend({
     url: 'anyurl',
     sync: myOwnSpecificSync,
});
//Define the sync function:
myOwnSpecificSync = function(method, model, options) { 
//add header 
//return only specific parameters of the success data
};
//let the model fetch the data from the server
MyApp.myModel.fetch();

但我不知道如何实现这些功能..或者它是否正确。

4

1 回答 1

1
var AuthSync = function(method, model, options) {
  options.beforeSend = function () {
    console.log('add auth header here');
  };
  return Backbone.sync(method, model, options);
};

var Model = Backbone.Model.extend({
  url : 'http://fiddle.jshell.net/echo/json/',
  sync : AuthSync
});

new Model().fetch();
于 2013-08-21T08:13:00.647 回答