gpt4 book ai didi

Backbone.js:如何在更改模型集合时强制 View 自动刷新

转载 作者:行者123 更新时间:2023-12-04 14:49:45 25 4
gpt4 key购买 nike

所以我有一个看起来像这样的 View 。

    //base class
var SelectListView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'addOne', 'addAll');
this.collection.bind('reset', this.addAll);
},
addAll: function() {
this.collection.each(this.addOne);
},
events: {
"change": "changedSelected"
},
changedSelected: function() {
this.selected = $(this.el);
this.setSelectedId($(this.el).val());
}

});

//my extended view
var PricingSelectListView = SelectListView.extend({
addOne: function(item) {
$(this.el).append(new PricingView({ model: item }).render().el);
}
});

我已经实例化了这样的 View ......
var products = new ProductPricings();
var pricingsView = new PricingSelectListView({
el: $("#sel-product"),
collection: products
});

在其他地方(另一种 View 自定义方法)我已经更新了定价 View 的集合
pricingsView.collection = new ProductPricings(filtered);

这没有看到做任何事情。
pricingsView.render();

所以现在集合中的项目更少了,但新 View 永远不会在 DOM 中呈现或刷新。

我该怎么做 1.) 刷新 DOM 中的渲染? 2.) 让它自动刷新DOM?我是否必须以某种方式告诉它在集合更改时进行渲染?

最佳答案

你绑定(bind)addOne()reset事件。当您只需更换 pricingsView.collection实例,则不会触发该事件并且 addOne()不执行。

请尝试:

pricingsView.collection.reset(filtered);

关于Backbone.js:如何在更改模型集合时强制 View 自动刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8743753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com