Когда скрывать () dijit. Диалог против .destroyRecursive () в dojo - PullRequest
4 голосов
/ 15 июня 2011

Я видел, как оба кода использовались в коде, но мне было интересно, что является предпочтительным и более эффективным методом закрытия диалогов с помощью dlg.hide () или dlg.destroyRecursive ()?

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Это зависит от того, собираетесь ли вы повторно использовать диалог или нет.Если дешевле просто создать его заново (вы определяете, что дешевле), используйте destroyRecursive().В противном случае, создайте его один раз и просто hide() в любое время, когда вам нужно его закрыть.

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

2 голосов
/ 10 ноября 2011

Я обнаружил, что не могу полностью уничтожить виджеты внутри диалога, если просто позвоню dialog.destroyRecursive(), хотя диалог кажется разрушенным.

Вместо этого мне нужно вызвать dialog.hide(), а затем вызвать this.destroyRecursive() в методе onHide.

Однако это вызывает еще одну безвредную ошибку "exception in animation handler for: onEnd".Но у него все виджеты в диалоге уничтожены.

...