2016-01-29 8 views
2

У меня есть странная ошибка на Android, у меня есть вид страницы, который имеет вид сбоку (SIDE), который загружает представление контента (FILTER), чем этот просмотр фильтра загружает другой вид (FORM) и этот последний загружает некоторые представления (ТЕКСТ)Loop while the cleanup object (only android)

[INFO] : ADD :: TEXT 
[INFO] : ADD :: TEXT 
[INFO] : ADD :: FORM 
[INFO] : ADD :: FILTER 
[INFO] : ADD :: SIDE 

когда я закрываю активный вид страницы, это вызывает функцию очистки от взглядов ребенка:

$.page.cleanup = function() { 
    side.cleanup(); 
}; 

console.log('ADD :: SIDE'); 
$.side.cleanup = function() { 
    console.log('DESTROY :: SIDE'); 
    filter.cleanup(); 
    //remove listeners, and null objects 
}; 

console.log('ADD :: FILTER'); 
$.filter.cleanup = function() { 
    console.log('DESTROY :: FILTER'); 
    form.cleanup(); 
    //remove listeners, and null objects 
}; 

console.log('ADD :: FORM'); 
$.form.cleanup = function() { 
    console.log('DESTROY :: FORM'); 
    for(var i in text) text[i].cleanup(); 
    //remove listeners, and null objects 
}; 

console.log('ADD :: TEXT'); 
$.text.cleanup = function() { 
    console.log('DESTROY :: TEXT'); 
    //remove listeners, and null objects 
}; 

Но когда я бегу функция очистки в android, запускает цикл, на iOS отлично работает:

IOS:

[INFO] : CLEANUP :: SIDE 
[INFO] : CLEANUP :: FILTER 
[INFO] : CLEANUP :: FORM 
[INFO] : CLEANUP :: TEXT 
[INFO] : CLEANUP :: TEXT 

андроид:

[INFO] : CLEANUP :: SIDE 
[INFO] : CLEANUP :: FILTER 
[INFO] : CLEANUP :: FORM 
[INFO] : CLEANUP :: TEXT 
[INFO] : CLEANUP :: TEXT 
[INFO] : CLEANUP :: FILTER 
[INFO] : CLEANUP :: FORM 
[INFO] : CLEANUP :: FILTER 
[INFO] : CLEANUP :: FORM 
[INFO] : CLEANUP :: FILTER 
[INFO] : CLEANUP :: FORM 
[INFO] : CLEANUP :: FILTER 
[INFO] : CLEANUP :: FORM 
... 

Любая идея ??

+0

Код не показывает иерархию просмотров/очистки, которые вы объясняете в своем вопросе, вы уверены, что форма не очищает что-либо, связанное с фильтром? –

+0

«Форма» имеет несколько типов полей, если типы «время», «дата» или «параметры», она создает другую «сторону», но в этом примере я использую только поле «текст», поэтому, когда Я уничтожаю «форму», единственные внутренние элементы для уничтожения - это те «текстовые» поля, а «форма» уничтожается только «фильтром», в следующие 3 часа я буду запускать еще несколько тестов, отключая дочерние элементы взгляды один за другим, чтобы найти проблему –

+0

По ошибке я очищал кнопки таким образом: 'for (var i в $ .buttons) $ .buttons [i] .cleanup();' вместо: 'для (var i в $ .buttons.children) $ .buttons.children [i] .cleanup(); ' не знаю почему, но это создает петлю в событии очистки фильтра, решено, спасибо за ответ –

ответ

1

По ошибке я очищал вверх кнопки таким образом:

for(var i in $.buttons) $.buttons[i].cleanup(); 

Вместо:

for(var i in $.buttons.children) $.buttons.children[i].cleanup(); 

Не знаю почему, но это создает петлю на фильтровальной случае вид очистки, решить, спасибо за ответ