【问题标题】:Backbone Marionette: Don't render composite view if collection is emptyBackbone Marionette:如果集合为空,则不渲染复合视图
【发布时间】:2013-06-07 21:56:50
【问题描述】:

我有一个 CompositeView,我在初始化时获取它的集合。

  initialize: function() {
    this.collection = this.model.things;
    this.collection.fetch();
  },

如果集合为空,我如何呈现此复合视图?

我知道EmptyView,但它仍然呈现复合视图的模板。如果集合为空,我不想渲染任何东西。

【问题讨论】:

    标签: backbone.js marionette backbone-views


    【解决方案1】:

    答案最终是在fetch 的延迟对象返回后渲染复合视图。

    initialize: function() {
      var self = this;
      this.collection = this.model.localFoods;
      this.collection.fetch().then(function() {
        self.render();
      });
    }
    

    当前成绩

    异步:23,我:0

    异步获胜!

    【讨论】:

    • 我也有同样的问题。我没有获取,而是检查集合的大小,并且仅在 > 1 时才渲染。但无论我是否调用 render(),它都会被渲染。当我使用 self 时,它还抱怨对象没有方法渲染。 (我一直在使用这个)。有什么帮助吗?
    【解决方案2】:

    来自文档:

    当集合的“reset”事件被触发时,它只会重新渲染 组合中的集合,而不是包装模板

    所以将{reset: true} 传递给fetch(),这样集合就会自动重新渲染:

    initialize: function() {
        this.collection = this.model.things;
        this.collection.fetch({reset: true});
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多