问题标签 [dojo-1.9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dojo - Dojo 1.9 在加载语言环境时构建“multipleDefine”错误
我的 dojo 应用程序在构建后中断,在加载应用程序期间,抛出“multipleDefine”并给出此错误:
错误{src:“dojoLoader”,信息:对象}
消息:多重定义
信息:对象{pid:“dojo”,mid:“dojo/nls/dojo_en-us”,pack:对象,url:“dojo/nls/dojo_en-us.js”,执行:5…}
这是我的个人资料:
}
这是 src/ 中的 index.html
注意:
build.sh
负责在部署到生产环境时删除“isDebug”标志。如果您完全修改此标志,您将破坏构建!
这是在 dist/ 中生成的 index.html
我检查以确保 dojo/nls/dojo_en-us.js 存在并且没问题。我被困在这一点上,没有任何线索!
任何解决此问题的帮助表示赞赏。
dojo - 错误:应用dojo构建后defineAlreadyDefined
我按照http://www.sitepen.com/blog/2012/06/11/dgrid-and-dojo-nano-build/的说明创建了自己的构建配置文件。我为 dojo 创建了引导层:
我还注意到,如果我跳过这一层的定义,则会创建更大的 dojo 包,因此第二层中包含的模块会被复制。
第二层包含 GridX 模块、dijit 控件和 Dojo 中使用的所有其他内容:
应用程序正确启动,它只向分层资源发出请求,但是在 FireBug 控制台中出现错误:
错误:defineAlreadyDefined makeError() dojo-all.js (Zeile 28)
我认为这是因为该declare
模块被加载了两次:首先是使用从 HTML 文件定义的 dojo.js 引导程序。其次,从 dojo-all.js 层,通过 require 动态加载。
基于引用的文章,我的方法中必须有一些流程,或者该文章已适应旧版本的 Dojo(我使用的是 1.9 版本)。
这里有什么错误?应该如何正确定义图层?如何指示 dojo build 不要覆盖 dojo.js 引导程序?或者排除没有正确声明 - 如果是这样,应该如何声明?
javascript - 从 HTML 标头加载层时,Dojo 构建在 IE9 上失败:属性 'dir' 未定义
我已经制作了一个 dojo 构建,但我希望在启用/禁用构建时具有灵活性,所以我尝试<script>
在 HTML 标头中加载标签:
我没有修改我的 JS 文件。它似乎起作用,但是,有一个问题,但仅限于 IE9,并且仅限于部署在 WebSphere 上的应用程序版本(我已经在 Apache2 上测试过)。问题是,在那个特定的代码片段中,属性“dir”是未定义的:
在搜索了一些类似的问题后(例如:How to prevent "Unable to get value of the property 'dir': object is null or undefined" error when loading pages in IE9),我检测到它可能是一些加载顺序问题。我已经从 HTML 标头中删除了该层,并按以下顺序将其加载到我的 JS 中:
但是,我知道人们正在 HTML 标头中加载构建,例如从这里的主题:Dojo Builds...?现在怎么办?
所以我的问题是,我是不是做错了什么,或者 HTML 标头的技巧不能保证在所有浏览器上都有效?
这是我的构建脚本配置:
这是dojo的build.bat:
javascript - 如何根据dojo中的单选按钮动态更改组合框的searchAttr?
我正在尝试searchAttr
根据单选按钮更改组合框的值。这是我到目前为止的工作片段。
这是我要完成的伪代码
javascript - 如何“取消设置” Dojo datetextbox 默认值?
我有一个 JS 覆盖层,它将我的网络应用程序上的数据输入控件设置为 dojo 小部件。我抓取像 <input type="text" class="date" /> 这样的输入并将它们变成DateTextBox
小部件。
这是我的基本代码:
我的问题是,如果没有提供任何值,所有 DateTextBox 最终都设置为“1970-00-01”作为初始日期。如果没有提供任何值,我希望将它们设置为 null 或 undef,但这在启动之前似乎是不可能的。
有没有办法在我打电话之前设置它widget.startup()
?
validation - 如何使用 dijit/Textarea 验证(Dojo 1.9)?
我有 textarea 这是必填字段。我发现帖子暗示 Dojo 没有对 Textarea 的验证,但在 Dojo 1.9 中,有一个参数“必需”。
我做了以下事情:
但效果出乎我的意料。texarea 总是有红色边框,即使该字段没有被聚焦(例如,与 ValidationTextBox 相反)。但是当我打电话时:
即使 texarea 为空,验证也会通过。
是否有可能让 Textare 的行为与 ValidationTextBox 中的相同,或者就目前而言,该组件的验证尚未准备好,我必须编写自定义版本(如链接的帖子中)或等待下一个 Dojo?
javascript - Dojo 声明 - 默认属性的范围(实例或静态)
我花了很多时间调试组件中的策略错误。该组件具有禁用/启用按钮,但我还没有看到效果。过了一会儿,我注意到,按钮在我创建的最后一个组件实例中发生了变化。声明看起来是这样的:
在调试中,我已经看到,当我创建对象的第二个实例时:
按钮已设置 - 它们的实例由所有实例共享!
最后,我在我的组件中创建了一个静态变量。这不是我想要的!该声明有什么问题?我应该如何为每个组件实例分别制作“按钮”实例?
javascript - Dojo dijit 创建的最佳实践是什么?
Dojo dijit 创建的最佳实践是什么?
- 纯粹的声明性方法 (D)
- 纯粹的程序化方法 (P)
- 两者的结合(D&P)
标准
- 最容易维护
- 开发速度最快
- 最直观
- 最棒的表演
- 大多数功能和灵活性
语境
我使用 Dojo 还不到一个月,最近我开始使用 dijit 库。dijit 广为人知的方面之一是它们可以以编程方式或声明方式声明。我总是喜欢在了解最佳实践的情况下使用一组新工具,并大致了解哪种方法对特定应用程序具有哪些优势/优势。
下面的信息来自对这两种风格的一些个人经验,以及我能找到的参考资料,这并不是很多。此链接是我在有关该主题的官方 Dojo 文档中找到的唯一链接,并且这篇文章提供了一些外部视角,并基本介绍了每个链接的代码如何寻找简单的场景。这两个链接都适用于旧版本的 dojo,在 1.7 版中引入 AMD 之前。
程序化
- 将 Dojo 与 HTML 分离,从而保持 HTML 的语义纯度
- 将事件处理程序和小部件放在同一个地方,提高可读性
- 似乎更容易动态地为属性分配值(例如,使用函数创建唯一 ID)
声明式
- 快速开发——直观、隐含的嵌套、像普通 HTML 元素一样定义的小部件
- 通过使用 data-jojo-* 属性实现有效的 HTML5
- 不保留 HTML 的语义纯度
- 事件处理程序来自外部脚本,造成了一些复杂性并降低了可读性
- 初始 parseOnLoad 可能会减慢前期小部件设置
关于回复的说明: 请在您的回复中说明每个标准。随意提出您认为重要的任何其他标准。我绝不是评估最佳实践的专家。
更新:
在浏览了更多关于这方面的信息后,我发现了另一篇具有类似想法的帖子,它提供了一些有用的背景信息,说明这些风格差异的含义。
dojo - dojo 1.9.1 中的这个 dgrid 代码有什么问题?
所以,这是我的代码:
这段代码有什么问题?以前,我安装了 1.7,带有一个旧的 dgrid。我刚刚更新了所有内容。现在什么坏了?我什么都看不见...
我也有一些声明性的 dojo 代码: