我想用由德里克贝利“ 的常见问题解决方案 ”中描述的方法在该线程渲染视图后一种模式是牵强。 我会在这里报告了他的解决方案:
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()视图渲染的函数被调用一次,但内容不会在页面上显示。
任何的想法?
您可以等到模型渲染视图前同步时间
var myView = new MyView({
model: myModel
});
myModel.on("sync", function(){
myRegion.show(myView);
});
myModel.fetch();
我想出了一个稍微不同的方法。 我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();
}
});