Javascript 主干js根据从多个URL返回的结果构建集合';s
我有一个这样的模型:Javascript 主干js根据从多个URL返回的结果构建集合';s,javascript,backbone.js,Javascript,Backbone.js,我有一个这样的模型: var BasicModel = Backbone.Model.extend({ defaults: { a: '', b: '', c: '', d: '', e: '' }, idAttribute: "f", parse: function (data) { return data; }, initialize: function () { console.log('Intialized'); }, constr
var BasicModel = Backbone.Model.extend({
defaults: {
a: '',
b: '',
c: '',
d: '',
e: ''
},
idAttribute: "f",
parse: function (data) {
return data;
},
initialize: function () {
console.log('Intialized');
},
constructor: function (attributes, options) {
Backbone.Model.apply(this, arguments);
}
});
var BasicCollection = Backbone.Collection.extend({
model: BasicModel,
url: urlCode
});
var ACollection = BasicCollection.extend({
parse: function (data) {
return data.a.b.c.d;
}
});
var aCollection = new ACollection ();
var BasicView = Backbone.View.extend({
tagName: 'tr',
template: _.template($('#basic-status-template').html()),
render: function () {
this.$el.html(this.template(this.model.attributes));
return this;
}
});
var BasicsView = Backbone.View.extend({
initialize: function () {
this.render();
},
});
像这样的收藏:
var BasicModel = Backbone.Model.extend({
defaults: {
a: '',
b: '',
c: '',
d: '',
e: ''
},
idAttribute: "f",
parse: function (data) {
return data;
},
initialize: function () {
console.log('Intialized');
},
constructor: function (attributes, options) {
Backbone.Model.apply(this, arguments);
}
});
var BasicCollection = Backbone.Collection.extend({
model: BasicModel,
url: urlCode
});
var ACollection = BasicCollection.extend({
parse: function (data) {
return data.a.b.c.d;
}
});
var aCollection = new ACollection ();
var BasicView = Backbone.View.extend({
tagName: 'tr',
template: _.template($('#basic-status-template').html()),
render: function () {
this.$el.html(this.template(this.model.attributes));
return this;
}
});
var BasicsView = Backbone.View.extend({
initialize: function () {
this.render();
},
});
还有这样的观点:
var BasicModel = Backbone.Model.extend({
defaults: {
a: '',
b: '',
c: '',
d: '',
e: ''
},
idAttribute: "f",
parse: function (data) {
return data;
},
initialize: function () {
console.log('Intialized');
},
constructor: function (attributes, options) {
Backbone.Model.apply(this, arguments);
}
});
var BasicCollection = Backbone.Collection.extend({
model: BasicModel,
url: urlCode
});
var ACollection = BasicCollection.extend({
parse: function (data) {
return data.a.b.c.d;
}
});
var aCollection = new ACollection ();
var BasicView = Backbone.View.extend({
tagName: 'tr',
template: _.template($('#basic-status-template').html()),
render: function () {
this.$el.html(this.template(this.model.attributes));
return this;
}
});
var BasicsView = Backbone.View.extend({
initialize: function () {
this.render();
},
});
这是集合获取的外观(构建视图):
但是现在我在尝试向视图将填充的表添加另一个细节时遇到了一个问题。其中一列需要来自单独url的数据。但我仍然希望它成为同一过程的一部分
有没有办法从两个URL的结果中形成一个集合。(即a、b、d和e来自URL 1,c来自URL 2)
这样,我所需要更改的只是模板,它的工作原理应该是一样的。而不是不得不改变其他的东西负载以及
谢谢。您几乎没有选择:
parse
方法中将数据添加到从集合的URL获取的响应中$.when(collection.fetch(), collection.fetchExtraData())
.done(()=> { /* create view here */ });
fetchExtraData
这里有一个自定义函数,可以发送额外的请求并使用数据正确更新集合。这样,两个请求将同时发送。您需要确保parse
不会重置来自其他端点的数据parse
方法中将数据添加到从集合的URL获取的响应中$.when(collection.fetch(), collection.fetchExtraData())
.done(()=> { /* create view here */ });
fetchExtraData
这里有一个自定义函数,可以发送额外的请求并使用数据正确更新集合。这样,两个请求将同时发送。您需要确保parse
不会重置来自其他端点的数据