gpt4 book ai didi

javascript - Backbone JS : can one view trigger updates in other views?

转载 作者:IT王子 更新时间:2023-10-29 03:04:26 25 4
gpt4 key购买 nike

在我的简单项目中,我有 2 个 View - 订单项 View (品牌)和应用。我附加了允许选择多个项目的功能:

var BrandView = Backbone.View.extend({...some code...    toggle_select: function() {        this.model.selected = !this.model.selected;        if(this.model.selected) $(this.el).addClass('selected');        else $(this.el).removeClass('selected');        return this;    }});var AppView = Backbone.View.extend({...some code...    delete_selected: function() {        _.each(Brands.selected(), function(model){             model.delete_selected();        });        return false;    },});

问题是,我想知道选择了多少项目。在此设置中,选择不会影响模型,因此不会触发任何事件。从 MVC 概念我明白 View 不应该直接与其他 View 对话。那么 AppView 如何知道 BrandViews 中正在选择某些内容?

更具体地说,我的 AppView 知道选择了多少项,所以如果选择了 1 个以上,我会显示一个菜单供多项选择。

最佳答案

您可能想阅读有关 Backbone 发布/订阅事件的讨论:

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

我喜欢把它作为一个全局事件机制添加进去:

Backbone.pubSub = _.extend({}, Backbone.Events);

然后在一个 View 中你可以触发一个事件:

Backbone.pubSub.trigger('my-event', payload);

在另一个你可以听:

Backbone.pubSub.on('my-event', this.onMyEvent, this);

关于javascript - Backbone JS : can one view trigger updates in other views?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984859/

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