Backbone base64编码

时间:2013-08-21 07:35:43

标签: backbone.js

我不知道如何使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();

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

1 个答案:

答案 0 :(得分: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();