【问题标题】:Backbone marionette render骨干木偶渲染
【发布时间】:2014-09-03 18:08:38
【问题描述】:

当我的代码的其他部分触发“page:change:after”事件时,我正在尝试重新渲染 Marionette Itemview。我尝试了两种方式:

1.

    self.listenTo(this.paginatedCollection,"page:change:after",function(){
        console.log("page:change:after detected!!!!!!!!!!!!!!!!!!");

        self.render;
    });

2.

    this.listenTo(this.paginatedCollection,"page:change:after",self.render);

由于某种原因,#2 有效,但 #1 无效。 #1回调中的控制台日志确实运行了(我可以在我的控制台上看到“page:change:after detected”)。我还添加了一个打印出“onRender!”的 onRender 方法。当我使用#2而不是#1时。看起来视图没有使用 #1 渲染。有人可以提供一些关于这种行为的见解吗?

这里有一个更完整的代码 sn-p 来提供更好的上下文:

Views.PaginationControls = Marionette.ItemView.extend({
        template: "#contact-paginator",

        initialize: function(options){

          var self = this;
          this.paginatedCollection = options.paginatedCollection;

          //why is this not working?
          self.listenTo(this.paginatedCollection,"page:change:after",function(){
              console.log("page:change:after detected!!!!!!!!!!!!!!!!!!");

              self.render;
          });



          //this works
          this.listenTo(this.paginatedCollection,"page:change:after",self.render);
        },

        onRender: function(){
          console.log("onRender!")
        }

});

【问题讨论】:

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


    【解决方案1】:

    在第一个示例中,您没有执行该方法 - 应该是 'self.render()` - 我怀疑这是问题的根源

    也就是说 - 我认为这会起作用并且可能更清洁,因为您可以完全摆脱自我:

    this.listenTo(this.paginatedCollection,"page:change:after",this.render);

    【讨论】:

    • 是的,你完全正确。我怎么看不到!谢谢。
    猜你喜欢
    • 2014-04-07
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多