Допустим, у меня есть ScrollableView с 3 представлениями (формами), эти представления имеют как минимум 10 полей, взгляните на этот пример.
index.js
$.content.add(Alloy.createController('scrollable').getView());
прокручиваемый.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, я запускаю функцию очистки для каждого представления и его дочерних элементов.
Должен ли я запускать функцию очистки для всех представлений ScrollableView?
Должен ли я обнулить все представления ScrollableView?
Должен ли я удалить все представления ScrollableView?
Должен ли я запускать функцию очистки для всех дочерних элементов View?
Должен ли я обнулить все дочерние элементы View?
Должен ли я удалить все дочерние элементы View?
ОБНОВЛЕНИЕ
В этом случае мне все равно нужно очистить все поля? или установка данных на нуль решит это?
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;
};
В любом случае, если в мои поля добавлен прослушиватель событий, например «изменение» или «щелчок», я должен удалить его в функции очистки, верно?
null
данные, все ссылки на различные представления также будут потеряны. Так что это исправит - person Rene Pot   schedule 08.06.2016