2012-03-28 4 views
0

В нашем приложении у нас есть различные окна, которые содержат сетку и их соответствующие магазины. Общая структура кода окна у нас выглядит следующим образом:ExtJs: Необходимо ли хранить хранилище, как только сетка будет уничтожена?

function showWin(){ 
    var storeVar = //code for store 
    var gridVar  = //code for grid with store as storeVar 
    var winVar  = //code for window having gridVar as item 
    winVar.show(); 
} 

Эта функция showWin() вызывается сказать по нажатию на кнопку, которая отображает окно.

Теперь, когда это окно закрыто, оно уничтожается вместе с его сеткой дочерних элементов. Но это также разрушает хранилище, связанное с сеткой? Наверное, нет.

Таким образом, если storeVar не разрушается при закрытии окна (точнее на разрушение сетки), то это должно быть принудительно удалить, чтобы уменьшить дополнительный багаж (как новая копия будет создаваться каждый раз, когда функция вызывается) из памяти? Если да, то как?

Благодарим за любую помощь заранее.

PS: Мы используем ExtJS версии 4.0.7

ответ

1

Ответы на тот же вопрос на форуме sencha и в соответствии с полученным там ответом, я думаю, что магазин не нужно уничтожать насильно, поскольку сборщик мусора сам позаботится об этом. More here.

Обновление вещей здесь тоже, надеясь, что это поможет кому-то еще искать то же самое.

1

Обычно вы не создаете магазин объектов самостоятельно. В ExtJs есть класс StoreManager, который обрабатывает все это в фоновом режиме. Вы просто получаете доступ к объектам хранилища, вызывая Ext.getStore ('MyStore1').

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

+0

Не могли бы вы уточнить, что «вы сами не создаете объекты магазина». Когда мы создаем сетку, разве мы не создаем ее магазин? – netemp

+0

Не вручную. Вы просто указываете хранилище: «mystore» и StoreManager создадут для вас экземпляр объекта. – sha

+0

Спасибо Ша. Но вот URL из примеров на веб-сайте ExtJS - http://docs.sencha.com/ext-js/4-0/#!/example/grid/array-grid.html - в этом примере, а точнее , в каждом другом примере вы можете обнаружить, что хранилище было создано вручную (это можно проверить в файле js примера). Таким образом, это не правильный путь? – netemp

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