Допустим, что у меня есть прокручиваемый вид с 3 видами (формами), эти формы имеют не менее 10 полей, посмотрите на этот пример.Необходимо удалить просмотров? Чтобы очистить контроллер сплава (память/производительность)
index.js
$.content.add(Alloy.createController('scrollable').getView());
scrollable.js
$.scrollableView.addView(Alloy.createController('form',{
fields:[
{label:'field 1',type:'text'},
{label:'field 1',type:'date',value:'2016-06-08'},
...
]
}).getView());
$.scrollableView.cleanup = function() {
$.destroy();
$.off();
for(var i = parseInt($.scrollableView.views.length); i > 0; i--) if($.scrollableView.views[i-1]) {
if($.scrollableView.views[i-1].cleanup) $.scrollableView.views[i-1].cleanup();
$.scrollableView.views[i-1] = null;
$.scrollableView.removeView($.scrollableView.views[i-1]);
}
$ = args = null;
};
form.js
for(var i in args.fields) $.form.add(Alloy.createController('field',args.fields[i]).getView());
$.form.cleanup = function() {
$.destroy();
$.off();
for(var i in $.form.children) {
if($.form.children[i].cleanup) $.form.children[i].cleanup();
$.form.children[i] = null;
}
$.form.removeAllChildren();
$ = args = null;
};
Когда я очищая все контроллеры, я до сих пор не понимаю что нужно делать.
Когда я хочу удалить ScrollableView, я запускаю функцию очистки на каждом представлении, а это дети.
Должен ли я запускать функцию очистки во всех видах прокрутки?
Должен ли я игнорировать все виды прокрутки?
Следует ли удалить все виды прокрутки?
Должен ли я запускать функцию очистки всех детей View?
Должен ли я игнорировать всех детей?
Должен ли я удалить всех детей?
UPDATE
В этом случае, мне еще нужно очистки всех полей? или установка данных в null будет решить это?
form.js
var args = arguments[0],
data = {
fields:{}
};
for(var i in args.fields) {
data.fields[args.fields[i].label] = Alloy.createController('field',args.fields[i]).getView();
$.form.add(data.fields[args.fields[i].label]);
}
$.form.cleanup = function() {
$.destroy();
$.off();
//this is needed?
for(var i in data.fields) {
if(data.fields[i].cleanup) data.fields[i].cleanup();
data.fields[i] = null;
}
//this is needed?
$ = data = args = null;
};
Во всяком случае, если мои поля имеют прослушиватель событий добавляется как «изменение» или «нажмите кнопку», я должен удалить его в функцию очистки, не так ли?
Если вы «запустили» данные, все ссылки на разные виды тоже будут потеряны. Так что это исправит –