2015-05-11 3 views
0

Я ищу лучший эквивалент:Как переключить вид внутри региона в марионетке?

if (view.myRegion.currentView) { 
    view.myRegion.reset(); 
} else { 
    var myOtherView = new Marionette.ItemView(); 
    view.myRegion.show(myOtherView); 
} 

Я прошел через документы, но не нашел ничего подобного, к сожалению.

+0

Я не думаю, что есть что-то для этого. В чем причина этого? Было бы лучше просто показать/скрыть представление, а не создавать/уничтожать его? –

+0

У меня есть огромный список, который можно развернуть, чтобы увидеть больше деталей. Я не хочу отображать множество узлов, чтобы показывать или скрывать выбранные элементы позже, поэтому я создаю/уничтожаю виды вместо –

ответ

0

С docs - showing a view на кукольный сайте под разделе preventDestroy,

Если заменить текущий вид с новой точки зрения по вызывающему шоу, по умолчанию он будет автоматически уничтожит предыдущий вид.

Возможно, это может быть полезно для вас. Менеджер региона автоматически уничтожит существующее представление, которое удерживается этим регионом, а затем отображает новый.

Если у вас есть что-то конкретное, что вы хотели бы сделать во время уничтожения, я считаю, что вы можете написать обратный вызов onDestroy для этого вида.

+0

логика немного бит в моем случае: если область имеет вид внутри, тогда сбросьте область, в противном случае отобразите данный вид внутри области - как простой переключатель для аккордеона –

+0

О, я вижу. Даже я не помню, имеет ли марионетка какие-либо функциональные возможности, которые это делают. Но возможно, используя ['beforeSwap' в событиях, поднятых во время шоу] (http://marionettejs.com/docs/v2.4.1/marionette.region.html#events-raised-during-show), это может быть достигнуто? – Cyclone

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