gpt4 book ai didi

Backbone.js:引用模型和集合查看...味道?

转载 作者:行者123 更新时间:2023-12-02 05:53:26 26 4
gpt4 key购买 nike

我有一个单独的 Customer 模型的 View ,该模型在构造时获取一个客户和客户集合。客户模型的需求是有道理的——它是客户的 View 。收藏的要求……我不确定那是不是一种气味,希望得到反馈!

它需要集合的原因是 View 中的按钮可以从客户集合中删除客户,并且 View 还可以监听集合删除事件以查看是否必须取消呈现(已成功从中删除)集合)。

    var CustomerView = Backbone.View.extend({

events: {
'click button.delete': 'remove'
},

initialize: function() {
_.bindAll(this, 'render', 'unrender', 'remove', 'removed');

this.model.bind('change', this.render);
this.collection.bind('remove', this.removed);
}

// render / unrender removed for brevity

remove: function () {
this.collection.remove(this.model);
},

removed: function (customer) {
if (this.model === customer) {
this.unrender();
}
}
});

View 的创建方式如下:

    var CustomersView = Backbone.View.extend({

initialize: function () {
_.bindAll(this, 'appendCustomer');

this.model.customers.bind('add', this.appendCustomer);
},

appendCustomer: function (customer) {
var customerView = new CustomerView({
model: customer,
collection: this.model.customers
});

$(this.el).append(customerView.render().el);
}
});

我在想我可以通过某种方式在这个 appendCustomer 方法中连接 CustomerView,而不是简单地将客户集合提供给 CustomerView。

想法?谢谢!

最佳答案

如果您通过集合添加这些模型,您可能需要使用模型的集合属性进行调查。这将取代您计划提供的客户关联。

鉴于以上情况,您可能只需要将模型传递到 View 中即可。如果您需要访问模板中的集合或其他方式,它只是“this.model.collection”。

此外,您随后可以简单地调用模型上的“destroy”方法,它将从集合中删除。然后,除了这个内置集合之外,您将使用与现在相同的事件绑定(bind)策略。

关于Backbone.js:引用模型和集合查看...味道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6420181/

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