Backbone.js 主干模型是纯文本文件。怎么取?
我有一个包含纯文本文件的模型文件。例如,Github gist具有以下url结构: 为此,我应该覆盖fetch/save/etc还是覆盖模型的同步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
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”。