渲染木偶区模型已被提取后,(Render a Marionette region after mod

2019-07-21 23:07发布

我想用由德里克贝利“ 的常见问题解决方案 ”中描述的方法在该线程渲染视图后一种模式是牵强。 我会在这里报告了他的解决方案:

 MyView = Backbone.View.extend({
  initialize: function(){
    this.model.on("sync", this.render, this);
  },

  render: function(){ ... }
});


myModel = new MyModel({id: someId});
new MyView({
  model: myModel
});

myModel.fetch();

我有一个稍微不同的情况:我的看法是区域布局内。 如果我所说的Marionette.Region.show()它的工作原理,但视图渲染两次。 调用Marionette.Region.attachView()视图渲染的函数被调用一次,但内容不会在页面上显示。

任何的想法?

Answer 1:

您可以等到模型渲染视图前同步时间


var myView = new MyView({
  model: myModel
});

myModel.on("sync", function(){
  myRegion.show(myView);
});

myModel.fetch();


Answer 2:

我想出了一个稍微不同的方法。 我neede我的看法上加载initalize自己的车型,因此德里克的做法是不是真的为我工作。 有,我不想在这里解释几个原因。 但是我来是这样的:

我创建了一个叫做与负载指示灯和微调默认模板,我重视的视图模板。 我有一个名为的UpdateView方法,这是触发一次模型同步,并与真正的模板替换装载模板和调用渲染()之后。

也许有人还会觉得它有用。

var myView = new MyView({
     template: loader,
     initialize : function(){
        this.model = new MyModel();
        this.model.on("sync", this.updateView, this);
        this.model.fetch();
     },
     updateView : function(){
        this.template = myTemplate;
        this.render();
     }
});


文章来源: Render a Marionette region after model has been fetched