2015-12-28 123 views
0

我正在研究使用Backbone牵线木偶的应用程序。我有一个包含区域的布局,这些区域又包含子区域。在父区域的onRender函数中,通过调用“showChildView”函数呈现子区域。我想在呈现子区域之后设置选项卡索引。有没有办法知道我的孩子地区是否被渲染?如何知道子区域是否呈现在区域

我试着用昂秀/ onAttach对亲区域的观点。但没有运气!

+0

只是从子视图的渲染方法触发自定义事件..? –

+0

谢谢!但是我有多个子视图,我需要一种方法来处理所有这些视图中的事件 – user2210060

+0

您可以从所有视图中触发相同的事件并让父视图侦听所有这些视图......?! –

回答

0

来检查区域“myRegion”目前呈现出一个观点尝试

var childView = parentView.getRegion('myRegion').currentView; 

,那么你可以检查视图已经被渲染

if (childView && childView.isRendered) { ... 

在你的情况下,呼叫后“showChildView”你的孩子的意见应呈现,不是吗?

+0

谢谢!但我的子视图呈现异步。我什么时候检查它们是否被渲染。如果我选择进行此项检查,我需要确定它们已被渲染,并且我没有办法做到这一点,除非某些事件是从子视图触发的。但我有多个子视图,我需要一种方法来处理异步渲染的所有事件 – user2210060

+1

您可以使用_attach_事件为每个子视图添加一个侦听器:'_.each([... child views。 ..],function(view){this.listenToOnce(view,'attach',function(){/ *增加计数器并在计数器到达子视图数时执行某些操作* /});},this)'。使用JS6,您还可以使用承诺为每个视图渲染方法创建承诺,然后从[Promise.all](http://www.ecma-international.org/ecma-262/6.0/#sec-promise.all)中调用父母。 –

0

在Chrome浏览器开发工具,你可以检查,如果该地区的DOM元素显示在源代码了。如果是,那么你的区域被渲染。

或者,您还可以通过在子视图中添加一个onRender()方法并在其中添加一个console.log()语句来进行调试。