Dojo 小部件未正确呈现

Posted

技术标签:

【中文标题】Dojo 小部件未正确呈现【英文标题】:Dojo widgets not rendering correctly 【发布时间】:2016-02-14 16:02:45 【问题描述】:

我正在使用带有 MobileFirst Studio 7.1 插件的 Eclipse Mars 4.5.0。

我正在使用内置的 dojo 库并在此处遵循 IBM 知识中心的文档:https://www-01.ibm.com/support/knowledgecenter/SSZH4A_6.2.0/com.ibm.worklight.dev.doc/wl_studio_tools/topics/cdojolibprjsetupwl.html

当我在浏览器上查看应用程序时,我无法查看任何 dojo 小部件。 Dojo 移动小部件正确呈现;我有一个滑块、单选按钮和圆形矩形窗格。在下图中,我尝试放置一个道场日期文本框和一个货币字段,但它们无法正确呈现。

感谢任何建议和帮助

【问题讨论】:

已经导入了一个 dojo css 样式,"claro.css" by example 对不起,我没听懂。我在示例中将 claro.css 添加到了 dojo 工具包设置中。 提供您的 MobileFirst Studio 项目。上传到某个地方。 该项目在此处可用:drive.google.com/… Idan,你能访问这个项目吗? 【参考方案1】:

dijit 主题似乎没有加载。

尝试在应用程序的 index.html 文件中包含主题:

<link rel="stylesheet" href="dijit/themes/claro/claro.css">

确保您的 www 文件夹中有主题和图标文件夹(www/digit/themes/claro 和 www/digit/icons)

在您提供的项目中,我在索引中看不到 CurrencyTextBox 或 DateTextBox 小部件。

但要使这些小部件正常工作,请确保在 main.js 中的 dojoInit() 函数中包含模块:

function dojoInit() 
    require([ "dojo/ready", "dojo/parser", "dojox/mobile", "dojo/dom", "dijit/registry", "dojox/mobile/ScrollableView", 
        "dijit/form/CurrencyTextBox", "dijit/form/DateTextBox"], 
        function(ready) 
           ready(function() 
        );
    );

在你的索引中你应该有这样的东西:

<body style="display: none;" class="claro">
        <div data-dojo-type="dojox.mobile.ScrollableView" id="view0" data-dojo-props="selected:true">
        <!--application UI goes here-->
        <label for="income1">U.S. Dollars</label>
        <input type="text" name="income1" id="income1" value="54775.53" required="true" 
        data-dojo-type="dijit/form/CurrencyTextBox" data-dojo-props="constraints:fractional:true,currency:'USD', invalidMessage:'Invalid amount. Cents are required.'" />
        <br>
        <label for="date1">Drop down Date box:</label>
        <input type="text" name="date1" id="date1" value="2005-12-30"
        data-dojo-type="dijit/form/DateTextBox"
        required="true" />
    </div>
    <script src="js/initOptions.js"></script>
    <script src="js/main.js"></script>
    <script src="js/messages.js"></script>
</body>

(别忘了给父&lt;body&gt;元素加上主题类名)

希望对你有帮助

【讨论】:

感谢您的帮助。我能够渲染一个dijit。需要注意的一件事是我们手动添加了很多文件。 dojo 请求似乎遗漏了很多文件。你认为将整个dijit文件夹复制到www文件夹中更好吗?

以上是关于Dojo 小部件未正确呈现的主要内容,如果未能解决你的问题,请参考以下文章

dojo 小部件不会发出事件

Dojo 小部件在响应 XhrPost 时返回时不呈现

Dojo 和 Ajax - 渲染小部件

小部件上的 dojo 查询

添加其他功能时小部件不起作用

DOJO:onClick 并不总是在自定义小部件中调用