2015-12-28 2 views
0

Я работаю над приложением, использующим манекен Магистра. У меня есть макет, содержащий регионы, которые, в свою очередь, содержат дочерние регионы. В функции onRender родительской области дочерние области отображаются, вызывая функцию showChildView. Я хотел бы установить индексы табуляции после рендеринга дочерних областей. Есть ли способ узнать, отображаются ли мои дочерние регионы?Как узнать, отображаются ли дочерние представления в регионе

Я попытался использовать onShow/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 dev вы можете проверить, отображается ли элемент dom для региона в исходном коде. Если да, то ваш регион отображается.

В качестве альтернативы вы также можете отлаживать, добавив метод onRender() в дочерний режим и добавив в него инструкцию console.log().

 Смежные вопросы

  • Нет связанных вопросов^_^