Javascript 使用新型号重置主干收集不会';你不能超越以前的型号吗?
我想在每次收到新数据时对主干收集进行批量重置,我希望每次重置时,所有当前模型都会清空,新数据会重置在顶部,但我发现新数据只是作为新模型与以前的模型一起添加。有人能告诉我需要做什么来实现这一点吗 JSJavascript 使用新型号重置主干收集不会';你不能超越以前的型号吗?,javascript,backbone.js,Javascript,Backbone.js,我想在每次收到新数据时对主干收集进行批量重置,我希望每次重置时,所有当前模型都会清空,新数据会重置在顶部,但我发现新数据只是作为新模型与以前的模型一起添加。有人能告诉我需要做什么来实现这一点吗 JS const OrderModel = Backbone.Model.extend({ parse(response) { response.name = `+${response.name}`; console.log(response.name);
const OrderModel = Backbone.Model.extend({
parse(response) {
response.name = `+${response.name}`;
console.log(response.name);
return response;
}
});
const OrdersCollection = Backbone.Collection.extend({
model: OrderModel,
initialize() {
setTimeout(() => {
this.trigger('snapshot', data);
}, 1000);
setTimeout(() => {
this.trigger('snapshot', data);
}, 2000);
this.listenTo(this, 'snapshot', this.setCollection, this);
},
setCollection(response) {
this.reset(response, {parse: true});
}
});
jsFiddle:小提琴:
出现了两个问题
第一个问题是,在重置集合时,没有重置html。在再次添加之前,需要清除前3个列表项
像这样:
renderRows() {
this.$el.empty()
this.collection.each(this.renderRow, this);
},
第二个问题是这段代码
const OrderModel = Backbone.Model.extend({
parse(response) {
response.name = `+${response.name}`;
return response;
}
});
参数response
引用data
数组中的对象。当您更改响应
的名称
属性时,您也在更改数据
中的引用对象。第二次调用解析时,您会看到一个额外的“+”,因为您在第一次解析中对数据进行了变异
我克隆了对象以防止意外覆盖
const OrderModel = Backbone.Model.extend({
parse(response) {
var model = _.clone(response);
model.name = `+${response.name}`;
return model;
}
});
小提琴:
出现了两个问题
第一个问题是,在重置集合时,没有重置html。在再次添加之前,需要清除前3个列表项
像这样:
renderRows() {
this.$el.empty()
this.collection.each(this.renderRow, this);
},
第二个问题是这段代码
const OrderModel = Backbone.Model.extend({
parse(response) {
response.name = `+${response.name}`;
return response;
}
});
参数response
引用data
数组中的对象。当您更改响应
的名称
属性时,您也在更改数据
中的引用对象。第二次调用解析时,您会看到一个额外的“+”,因为您在第一次解析中对数据进行了变异
我克隆了对象以防止意外覆盖
const OrderModel = Backbone.Model.extend({
parse(response) {
var model = _.clone(response);
model.name = `+${response.name}`;
return model;
}
});
我不确定我是否理解你的问题。每次重置收藏时,长度始终为3。如果每次重置收藏时检查小提琴,则会添加另外3个型号。我遇到的问题是第一组模型数据被设置,在每个模型上运行parse以向name添加一个+,下一组数据被设置,模型再次运行parse,但这次添加了2++等等。我不确定我是否理解您的问题。每次重置收藏时,长度始终为3。如果每次重置收藏时检查小提琴,则会添加另外3个型号。我遇到的问题是,第一组模型数据被设置,在每个模型上运行parse以向name添加一个+,下一组数据被设置,模型再次运行parse,但这次添加了2++等等。答案很好,我总是在parse中直接更新数据变量,但现在这种类型的实现只会遇到这个问题。将尝试在我的主要项目,看看这个问题是否得到解决!谢天谢地,我总是直接更新parse中的数据变量,但现在这种类型的实现只会遇到这个问题。将尝试在我的主要项目,看看这个问题是否得到解决!谢谢