鉴于这样的事情:
View = Backbone.Marionette.ItemView.extend({ });
myView = new View();
//region already exists
myLayout.region.show(myView)
//some time later this gets called again:
myLayout.region.show(myView)
Run Code Online (Sandbox Code Playgroud)
我可以在文档中看到currentView,但这似乎只适用于初始化.显示视图后,我可以查询区域以查看视图吗?视图实例或类型都会有所帮助.看看Chrome的调试器,我看不到该区域的任何属性/方法会有所帮助.
想要这样做的动机是,如果已经显示,则我不再显示区域中的静态项目视图,因为这可以(特别是如果涉及图像)导致屏幕上的轻微闪烁效果.
谢谢
--Justin Wyllie
evi*_*ive 11
您可以在调用show方法之前添加条件:
if (myLayout.region.currentView != myView)
myLayout.region.show(myView)
Run Code Online (Sandbox Code Playgroud)
因此,如果您尝试show使用相同的电话,View它将无法显示.
如果您想以region.show(myView)这种方式办理入住手续,请致电:
if (_.isUndefined(myLayout.region.currentView))
myLayout.region.show(myView)
Run Code Online (Sandbox Code Playgroud)
您可以检查视图的属性isClosed和$el属性.就像是
if (myView.isClosed || _.isUndefined(myView.$el)) {
myLayout.region.show(myView);
}
Run Code Online (Sandbox Code Playgroud)
这与区域检查视图是否关闭的方式相同:
show: function(view) {
this.ensureEl();
var isViewClosed = view.isClosed || _.isUndefined(view.$el);
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8269 次 |
| 最近记录: |