在初始化视图之前使用Backbone Fetch Success Callback来更改数据

时间:2014-04-03 19:29:44

标签: javascript backbone.js

当我从服务器获取骨干模型(严格来说是一个集合)时,我正在寻找一种拦截从服务器返回的值的方法,然后在继续之前修改它。我认为我可以做这样的事情

SessionController.prototype._initPages = function() {
    return App.pages.fetch({
      reset: true,
      success: function(model, response, options) {
         //modify the contents of response
      }
};

我的修改将反映在用于初始化视图的模型中。

然而,我正在寻找骨干源,我想我可能误解了一些东西。

fetch: function(options) {
  options = options ? _.clone(options) : {};
  if (options.parse === void 0) options.parse = true;
  var success = options.success;
  var collection = this;
  options.success = function(resp) {
    var method = options.reset ? 'reset' : 'set';
    collection[method](resp, options);                 //this line updates the model
    if (success) success(collection, resp, options);   // my success callback 
    collection.trigger('sync', collection, resp, options);
  };
  wrapError(this, options);
  return this.sync('read', this, options);
}

根据我的需要,似乎需要切换两条注释行,但我认为我只是误解了如何使用此功能。

如何在服务器响应成为我的模型之前修改它?

1 个答案:

答案 0 :(得分:2)

我认为你可以覆盖parse函数来根据需要修改数据 http://backbonejs.org/#Model-parse