Backbone.js 主干模型是纯文本文件。怎么取?

Backbone.js 主干模型是纯文本文件。怎么取?,backbone.js,backbone-model,Backbone.js,Backbone Model,我有一个包含纯文本文件的模型文件。例如,Github gist具有以下url结构: 为此,我应该覆盖fetch/save/etc还是覆盖模型的同步 var File = Backbone.Model.extend({ path: '', contents: '', initialize: function(options) { this.path = options.path || ''; }, fetch: function() { // Do I over

我有一个包含纯文本文件的模型文件。例如,Github gist具有以下url结构:

为此,我应该覆盖fetch/save/etc还是覆盖模型的同步

var File = Backbone.Model.extend({
  path: '',
  contents: '',
  initialize: function(options) {
    this.path = options.path || '';
  },
  fetch: function() {
    // Do I override fetch/save/etc?
    $.get(this.path).done(function(contents) {this.contents = contents});
  },
  sync: function (method, model, options, error) {
    // Or do I override sync?
  }
});

您可以稍微重写
parse
fetch
url
方法:

var File = Backbone.Model.extend({
  url: function(){
    return this.get('path')
  },

  // call original Backbone.Model#fetch with `dataType` equal `text` for $.ajax
  fetch: function(options){
    options = _.extend(options || {}, {
      dataType: 'text'
    });
    this.constructor.__super__.fetch.call(this, options);
  },

  // store response in content attribute
  parse: function(response){
    return {content: response};
  }
});
在这种情况下,您的代码将更加惯用,您将获得主干本地方法的所有好处(获取、请求和同步事件、更改事件等的成功和错误回调)。您可以像这样使用它:

var someFile = new File({
  path: 'http:/example.com/someFile.txt'
});

someFile.fetch({
  success: function(){
    console.log(someFile.get('content'); // => content of someFile.txt
  }
});

您可以稍微重写
parse
fetch
url
方法:

var File = Backbone.Model.extend({
  url: function(){
    return this.get('path')
  },

  // call original Backbone.Model#fetch with `dataType` equal `text` for $.ajax
  fetch: function(options){
    options = _.extend(options || {}, {
      dataType: 'text'
    });
    this.constructor.__super__.fetch.call(this, options);
  },

  // store response in content attribute
  parse: function(response){
    return {content: response};
  }
});
在这种情况下,您的代码将更加惯用,您将获得主干本地方法的所有好处(获取、请求和同步事件、更改事件等的成功和错误回调)。您可以像这样使用它:

var someFile = new File({
  path: 'http:/example.com/someFile.txt'
});

someFile.fetch({
  success: function(){
    console.log(someFile.get('content'); // => content of someFile.txt
  }
});

是否需要将文档发送回服务器?如果没有,请使用fetch。您能否澄清“我有一个包含纯文本文件的模型文件”?“包含纯文本文件”是什么意思?您的意思是模型的数据在文本文件中吗?@TNguyen文件模型有一个属性“contents”,它将包含纯文本文件的内容。服务器没有用json响应,而是用纯文本响应。我只是想让模型将响应填充到contents属性中,而不是试图将响应解析为jsonYeah,所以在这种情况下,jgillich是这么说的。请记住,您需要在.get()选项中将数据类型设置为“text”。是否需要将文档发送回服务器?如果没有,请使用fetch。您能否澄清“我有一个包含纯文本文件的模型文件”?“包含纯文本文件”是什么意思?您的意思是模型的数据在文本文件中吗?@TNguyen文件模型有一个属性“contents”,它将包含纯文本文件的内容。服务器没有用json响应,而是用纯文本响应。我只是想让模型将响应填充到contents属性中,而不是试图将响应解析为jsonYeah,所以在这种情况下,jgillich是这么说的。请记住,您需要在.get()选项中将数据类型设置为“text”。