【问题标题】:Stored collection for multiple itemviews: marionette多个项目视图的存储集合:木偶
【发布时间】:2015-05-05 15:26:21
【问题描述】:

我有一个名为 QueueItems 的复合视图,然后是集合中每个元素的 itemView,它可以让我修改其中的每一个元素。每个元素都需要能够从多个标签集合中进行选择,例如国家、公司等问题是我不确定如何将其嵌入到单个项目视图中。我不想每次有itemView的时候都打个电话,所以我把集合放在了复合视图中。但是我的问题是我不知道如何访问它,如果我这样做了,如何确定 ajax 拉取集合是否成功。

想法、建议;任何事情都有帮助。谢谢!

【问题讨论】:

    标签: javascript ajax backbone.js marionette


    【解决方案1】:

    您可以将集合存储在全球可访问的位置。我见过人们在引导他们的应用程序时将它们附加到他们的应用程序对象上。

    App.States = new StatesCollection();
    App.States.fetch();
    

    如果您在 CompositeView 对象中创建了这个集合,那么您可以使用 childViewOptions 参数将它传递给每个孩子。

    var QueueItems = Marionette.CompositeView.extend({
      childViewOptions: {
        states: this.states
      },
    
      initialize: function() {
         this.states = new StatesCollection();
         this.states.fetch();
      }
    }
    

    然后您可以在 childView 初始化中抓取它。

    var QueueItem = Marionette.ItemView.extend({
      initialize: function(options) {
        this.states = options.states;
      }
    }
    

    至于担心它们是否已加载,您应该只在您的 ItemView 中添加一个侦听器,以便在集合同步或重置时呈现。然后它会在您获取或加载集合时重新呈现自己。

    var QueueItem = Marionette.ItemView.extend({
      initialize: function(options) {
        this.states = options.states;
        this.listenTo(this.states, 'sync reset', this.render);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多