2013-05-08 3 views
2

В Dart Я пытаюсь динамически добавить HTML-элемент в элемент div.Не удается выполнить запрос динамически добавленных элементов

Примечание: элемент mainContainer просто DIV в моем HTML код

import 'dart:html'; 

main() 
{ 
    loadHTML("web/html/test.html"); 
} 

void loadHTML(String fileName) 
{ 
    DivElement div = query("#mainContainer"); 
    div.children.clear(); 

    HttpRequest.getString(fileName).then((resp) { 
    div.appendHtml(resp); 
    }); 
} 

Вот test.html только для целей тестирования

<h1 id="test">test</h1> 

Проблема заключается в том, когда я хочу запрос для #test ничего не найдено

... 
main() 
{ 
    loadHTML("web/html/test.html"); 

    Element elem = query("#test"); 
    if (elem == null) 
    { 
    print("element is null"); 
    } 
} 
... 

Это потому, что HTML еще не загружен в документ? Я не уверен, что здесь происходит. Фактический HTML отображается в браузере, однако он не может найти тест.

Использование Dart SDK версии 0.5.5.0_r22416

ответ

5

Пути вашего код в настоящее время организован, вы запрашивая #test до фрагмента HTML был приложен к div. Если вы делаете вещи, требующие #test в обратный вызов, все должно работать:

HttpRequest.getString(fileName).then((resp) { 
    div.appendHtml(resp); 
    Element elem = query("#test"); 
    if (elem == null) 
    print("element is null"); 
}); 

Если это не ясно, что происходит, ваш HttpRequest асинхронный. Это как и должно быть (вы не хотите блокировать, пока вы ждете в сети), но ваш код должен учитывать это; вы не можете ожидать, чтобы выбранный HTML был добавлен на страницу только потому, что вернулся loadHTML().

+0

Спасибо, отлично работает. – computer10171

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