Проблема с парсингом панели контента / вкладок Dojo - PullRequest
2 голосов
/ 08 июля 2011

У меня проблемы с анализом HTML-разметки в виджеты Dojo. Вот что я делаю:

var tab = new dijit.layout.ContentPane({
    title: "xyz",
    parseOnLoad: false,   //I am doing this intentionally
    href: "some-relative-url"
});

tabPane.addChild(tab);

Теперь, если я протестирую это с parseOnLoad = true, мои виджеты будут загружены хорошо. Тем не менее, я пытаюсь обработать HTML, прежде чем он превращается в виджеты. Поэтому я отложил синтаксический анализ, добавив параметр parseOnLoad: false. Я связал функцию, которая будет вызываться, когда моя вкладка загружена (то есть вызов Ajax завершен), например:

dojo.connect (tab, "onDownloadEnd", myFunction);

function myFunction() {

   //manipulate the HTML code via this.content
   dojo.parser.parse(this);   //this doesn't do anything. I tried many variations!
}

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

Спасибо

1 Ответ

2 голосов
/ 09 июля 2011

this в этом контексте, вероятно, является объектом window, так как вы не устанавливаете область действия в вашем connect (из кода, который вы разместили, я предполагаю, что myFunction() - это бесплатная функция, а не метод .

Вам необходимо передать dojo.parser.parse узел DOM. Предполагая, что tab является виджетом, вы можете использовать dojo.parser.parse(tab.domNode), если функция определена в контексте доступности tab. Если this ограничен виджетом со вкладками, тогда вы можете использовать dojo.parser.parse(this.domNode), как вы сказали в своем комментарии.

Вы можете заставить прицел всемогущим dojo.hitch :) Прочитайте документацию здесь , и я рекомендую Как this работает раздел из сада Javascript .

...