【问题标题】:Is there a way to re-render child view on any custom JQuery event in Backbone/Marionette?有没有办法在 Backbone/Marionette 中的任何自定义 JQuery 事件上重新呈现子视图?
【发布时间】:2019-12-13 07:10:18
【问题描述】:

我想在$(window).resize() 事件的复合视图中重新渲染正在渲染的子视图,我在复合视图的onShow() 中订阅了该事件。我们能做到吗?如果是,是否有首选方法?我想要这样的东西:

define([
 "app",
 "views/list-item",
], function(App, ListItem) {
   var List= App.CompositeView.extend({
     template: "list",
     childViewContainer: ".list-items",
     childView: ListItem,
     onShow: function() {
        $(window).on('resize', function() {
          //re-render child View(ListItem)
        });
     }
  });
 return List;
});

【问题讨论】:

    标签: backbone.js marionette backbone-views backbone-events


    【解决方案1】:

    根据this PR CompositeView 有一个renderChildren 方法,这取决于你的木偶版本。如果它是旧的,它可能是私有的_renderChildren。

    旁注:在视图中包含全局选择器和事件是不好的做法。我会将该逻辑放在视图之外的单独脚本中。

    【讨论】:

      【解决方案2】:

      您可以在父视图中实现“modelEvents”。在更改“modelEvents”时调用渲染方法,该方法将重新渲染视图。例如:

      “模型事件”:{ “更改:更新视图”:“渲染” }

      并切换“updateView”模型以调用此事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-03
        • 2013-05-03
        • 2012-09-27
        • 1970-01-01
        • 2013-09-12
        • 1970-01-01
        相关资源
        最近更新 更多