Dojo Parseonload: false Тогда не загружаются модули Dojo - PullRequest
0 голосов
/ 03 марта 2010

У меня есть несколько вкладок Dijit, и на этих вкладках есть несколько текстовых полей и полей Dojo. Некоторые из моих вкладок Dojo загружаются при загрузке страницы, а некоторые загружаются только при нажатии.

Моя проблема в том, что я не могу получить вкладки, которые загружаются только при нажатии, для работы с модулями Dojo.

Это сложно объяснить, поэтому я сделал простой пример, чтобы помочь. Я включил столько кода в код, который, я думаю, может оказать какое-либо влияние на результат.

Index.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="chrome=1" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: false, parseOnLoad: true"></script>

   <script type="text/javascript">
     dojo.require('dijit.layout.TabContainer');
    dojo.require('dijit.layout.ContentPane');
           dojo.require("dijit.form.DateTextBox");
   </script>

  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 

 </head>

<body class="tundra">

Works Outside of a Tab: <input class="tundra" id="outsideworking" name="outsideworking"  type="text" dojoType="dijit.form.DateTextBox"> 
<br><br><br>
 <div id="tab" dojoType="dijit.layout.TabContainer" style="width:50%;height:200px" >

 <div id="tab-working" dojoType="dijit.layout.ContentPane" selected="true" title="Loads on Page Load">
  Test working
                 <input class="tundra" id="working" name="working"  type="text" dojoType="dijit.form.DateTextBox"> 
       </div>

 <div id="tab-notworking" dojoType="dijit.layout.ContentPane" title="Load On Click" preload="false" parseOnLoad="false" href="loadafter.php">
       </div>

 <div id="tab-simplenotworking" dojoType="dijit.layout.ContentPane" title="Load On Click with Simple File" preload="false" parseOnLoad="false" href="simple.php">
       </div>

 </div>

</body>
</html>

loadafter.php

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  <meta http-equiv="X-UA-Compatible" content="chrome=1" />
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js" djConfig="isDebug: false, parseOnLoad: true"></script>
<script type="text/javascript">
        dojo.require("dijit.form.DateTextBox");
</script>

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dijit/themes/tundra/tundra.css" /> 



</head>

<body class="tundra">

Outside of a Tab


  Not working here:
                 <input class="tundra" id="notworking" name="notworking"  type="text" 

    dojoType="dijit.form.DateTextBox"> 

</body>
</html>

simple.php

<input class="tundra" id="simplenotworking" name="simplenotworking"  type="text" dojoType="dijit.form.DateTextBox">

Кто-нибудь может помочь направить меня в правильном направлении?

Спасибо gggggggg

Ответы [ 3 ]

4 голосов
/ 03 марта 2010

Короче говоря, если вы установили parseOnLoad в значение false, вам нужно проанализировать фрагмент html самостоятельно. А для ваших вкладок, если вы щелкнули вкладку, возможно, вам придется анализировать вкладку вручную.

Например:

<div id='a'><input id="simplenotworking" name="simplenotworking" type="text" dojoType="dijit.form.DateTextBox"> </div>

Вы можете использовать dojo.parser.parse(dojo.byId("a")) для визуализации виджета.

Кстати, вам не нужно прикреплять класс тундры в каждом месте виджетов диджита, его просто нужно поместить в тег body,

0 голосов
/ 14 мая 2012

если вы хотите выбрать dijit для парсера, вам нужно сделать это с помощью dijit

dojo.parser.parse(dijit.byId("a"))

если вы используете dojo, он выберет узел dom. если вы используете dijit, он выберет виджет

0 голосов
/ 06 января 2011

Попробуйте использовать более сложный селектор, например dojo.query, чтобы точно определить нужный Dom.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...