簡體   English   中英

Backbonejs-如何偵聽屬於集合的集合中的更改

[英]Backbonejs - How to listen to a change in a collection that is part of a collection

我的應用程序由以下內容組成:

集合:

  • 欄目
  • 座位數

楷模:

  • 座位
  • 座次表
  • 部分

SeatingChart具有“ Sections作為屬性

A SectionsSection的集合

Section具有Seats作為屬性

一個Seats是集合Seat

有沒有,里面的方式SeatingChart聽時到Seat被添加到的一個Section在S SeatingChartSections

我確定您知道Backbone確實提供了此功能。 因此,我假設您想提出有關如何連接此設備的建議。 遵循的解決方案將特定於您的設計。 對於一般情況,我建議您參考“骨干關系”

您已經放置了解決方案的第一部分,即保留對要跟蹤的集合的引用。 隨着關系的發展,這將派上用場。

但是,讓我們從底部開始。 這些問題詢問如何檢測何時添加了座位。 因此,讓我們定義Seats集合:

var Seats = Backbone.Collection.extend({
  initialize: function () {
    this.setupListeners();
  },

  setupListeners: function () {
    this.on('add', _.partial(this.bubbleAction, 'add'));
    this.on('remove', _.partial(this.bubbleAction, 'remove'));
  },

  bubbleAction: function (action, model) {
    this.trigger('seats-action' action, model);
  }
})

現在, Sections必須采取Seats動作並將其冒泡。

var Sections = Backbone.Collection.extend({
  initialize: function () {
    this.setupListeners();
  },

  setupListeners: function () {
    this.listenTo(this.seats, 'seats-action', this.bubbleSeatsAction);
  },

  bubbleSeatsAction: function (action, model) {
    this.trigger('section:seats-action', this.sectionClass, action, model);
  }
})

最后,在您的SeatingChart集合中:

var SeatingChart = Backbone.Collection.extend({
  initialize: function () {
    this.setupListeners();
  },

  setupListeners: function () {
    this.listenTo(this.sections, 'section:seats-action', this.handleSeatAction);
  },

  handleSeatAction: function (section, action, model) {
    ///Logic goes here to handle a seat action///
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM