3

所以我试图在 JS Bin 中重现这一点,但我无法让道场工作。在 chrome 和 firefox 上也是如此。

我有一个复选框和一个 dojo 就绪功能,看起来像

dojo.ready(function() {
    dijit.byId('checkbox1').checked = true;
});

现在,当页面呈现时,checked = true 已成功执行,但是复选框不会出现检查直到您将鼠标悬停在它上面!

就像浏览器没有在复选框上重新绘制区域一样。在复选框上挥动鼠标,浏览器会重新绘制它,以便您可以看到勾号。

有人遇到过这个吗?

4

2 回答 2

4

您需要使用:

dijit.byId('checkbox1').set('checked', true)

而不是直接设置属性。所有小部件都应遵循此约定,因为您永远不知道更改属性值时可能需要进行哪些其他处理。

于 2012-04-19T20:07:47.000 回答
2

对我来说,问题是我没有正确加载小部件的 css。

Dojo 的复选框使用 sprite-sheet 而不是原生 html 复选框显示。

通过隐藏 spritesheet 图像并显示支持它的常规 html 复选框,我覆盖了 dojo 的 css(我使用的是 claro 主题)。

因此,请确保您在 css 中包含一个 dojo 主题 css 文件(对我来说是 claro.css)。并确保<body>您的 html 上的标签具有class="claro"您正在使用的主题或任何主题。

使用精灵表(同样,在本例中为 claro),您的复选框应该看起来dojo claro 主题复选框不像html复选框

于 2013-09-24T23:04:40.700 回答