深入理解AMD模式下的Dijit

认识Dojo中的界面控件:Dijit <br />Dojo框架区别于其他Ajax框架的一个显著特征就是它的界面控件系统:Dijit。Dijit是Dojo中界面控件的总称,他们使用灵活而且易于理解。每个Dijit控件都是由Dojo类以及控件中使用的图片,CSS等资源文件共同组成。通过Dijit架构,可以方便的创建灵活、可扩展、可定制外观的控件。下面将逐步介绍如何创建、配置Dijit控件,从而将其用在自己的web应用中。<br /><br /> 开始使用Dijit:引入需要的类和资源<br /> <br />前面提到Dijit的组成中除了Dojo类 阅读详情

深入理解AMD模式下的Dijit

Dojo Toolkit与其他JavaScript类库最大的不同是Dojo的UI组件系统:Dijit。这是一个灵活的,综合的Dojo 模块集合(由相对应的例如图片,CSS文件等等补充)。Dijit能够帮助你创建灵活的,可扩展的,现代的组件。想要学习如何安装,配置并且使用基本的Dijit在你的web应用中,请继续阅读。


引用合适的模块和资源

因为Dijit包括了一系列的UI组件,他绑定了4个支持的主题:nihilo, soria, tundra 和claro。每个主题包括了一系列的图片和CSS文件来控制组件的外观。CSS文件必须显示地被包括在每一个HTML页面中:

<style type="text/css">
    /* dojo.css is a CSS Reset, and is optional.
    @import "http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/resources/dojo.css";
    /* Using the claro theme in this example */
    @import "http://ajax.googleapis.com/ajax/libs/dojo/1.8/dijit/themes/claro/claro.css";
    /* Note that if you don't specify a minor revision, e.g. 1.8.0 or 1.7.1, the CDN will deliver the latest version */
</style>

在页面中的body标签中,或者在你的组件的父节点中,你需要根据你想要的主题定义class名。

<body class="claro">

你可以使用Dijit Theme Tester查看每一种主题。你也能够定义自己的主题。

dojoConfig

在dojoConifg中有许多选项,但是最重要的两个是async和isDebug。在开发过程中你会想要将isDebug设置成true一边获得适当的警告信息。async选项用来告诉AMD Loader去使用全新的,快速的方法去加载JavaScript模块。

dojoConfig = {
    isDebug:true,
    async:true
};

注意:parseOnLoad 是 dojoConfig 中的一个常用的选项,但是这个用法已经不再被推荐。请查看如下的关于 parser 的信息。

dojoConfig是全局的并且必须在你加载Dojo之前被载入,不然它会被忽略。你也可以将configuration设置为script文件上的一个属性,这种情况下你将使用data-dojo-config。

<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js"
    data-dojo-config="isDebug:true, async:true" type="text/javascript">
</script>

现在是时候来添加一个控件。一个快速的测试是在页面中添加一个按键,以便检验任何东西都如我们预料地进行。

<body class="claro">
    <button data-dojo-type='dijit/form/Button'>Clicky</button>
</body>


dojo/parser

正如你看到的,控件并没有被正确地解析。我们需要载入dojo/parser 并且显式地告诉dojo去解析这个控件。我们何时做这件事?当让是在当DOM准备好之后。AMD式判断方法是使用dojo/domReady插件。 AMD被告知一个被载入的依赖是一个拥有感叹号的插件,比如:dojo/domReady!。因为我们不需要Dojo在解析之前做任何工作,我们可以安全地将这段代码放在body的底部。

<body class="claro">
    <button data-dojo-type='dijit/form/Button'>Clicky</button>
    <script>
        require([
            'dojo/parser',
            'dojo/domReady!'
        ], function(parser){
            parser.parse(); // tell dojo to check the DOM for widgets
        });
    </script>
</body>


控件在claro主题下被解析,但是在控制台有一个警告:WARNING: Modules being Auto-Required: dijit/form/Button.这条警告是因为控件并未在任何地方被引入,为了是你的应用获得最佳的性能,AMD与Dojo需要你显式地定义你想在应用中使用的模块和依赖。Dojo1.8的解析器比较宽容。它异步并且足够聪明以至于能找到并且载入未被引入的模块。这是并不推荐使用的发放方法,因为这要比事先在你想要解析和渲染之前载入模块慢,但是它能够捕获错误并且在不阻塞应用的情况下告知我们还是很有用的。Dojo 1.7仅仅会失败并且提示一条错误信息。将dijit/form/Button加入require引用能够解决这个问题并且提高性能。

Dijit系统的一个最显著的特点是你可以使用一或两种方法创建一个Dijit控件:声明式,使用HTML标记和自定义的属性;或者编程式,使用纯粹的JavaScript。让我们看一看如何将一个基本select元素转变成一个Dojo-enhanced控件。

创建控件

基本的 select控件

<select name="character" id="character">
    <option value="">Select a character</option>
    <option value="Leonard">Dr. Leonard Leakey Hofstadter</option>
    <option value="Sheldon" selected="selected">Dr. Sheldon Lee Cooper</option>
    <option value="Rajesh">Dr. Rajesh Ramayan Koothrappali</option>
    <option value="Howard">Howard Joel Wolowitz</option>
</select>

这是一个静态的包含了一系列options元素的select元素。我们知道我们想要将这个select元素变成一个dijit/form/FilterSelect控件,因此我们必须require这个模块。

require([
    'dojo/parser',
    'dojo/domReady!',
    'dijit/form/FilteringSelect'
], function(parser, domReady, FilteringSelect){
    parser.parse();
});

既然dijit/form/FilterSelect模块已经可用,并且parser正在查找DOM中的控件,我们可以使用声明式或者编程式的方法来enhance我们的select元素。

声明方式

声明式的增强select元素的方法是在HTML元素本身完成的。

<select name="character" id="characterNode"
    data-dojo-type="dijit.form.FilteringSelect"
    data-dojo-props='autoComplete:true, pageSize:10' >
    <option value="">Select a character</option>
    <option value="Leonard">Dr. Leonard Leakey Hofstadter</option>
    <option value="Sheldon" selected="selected">Dr. Sheldon Lee Cooper</option>
    <option value="Rajesh">Dr. Rajesh Ramayan Koothrappali</option>
    <option value="Howard">Howard Joel Wolowitz</option>
</select>

这个声明式的例子阐述了data-dojo-type的使用以便标识出哪个Dijit应该被使用在给定的元素之上。当我们调用parser.parse()时, Dojo将会发现这个元素并且实例化并初始化控件。


dijit/form/FilteringSelect模块的选项也是自定义属性。当用户输入一个值之后控件会自动填入并且每一页显示10项。就像一个普通的select元素那样,“sheldon”会在初始被选中。

编程式

增强select元素的编程方法是完全使用Javascript完成的。

    require([
    'dojo/domReady!',
    'dijit/form/FilteringSelect'
], function(domReady, FilteringSelect){
 
    var filteringSelect = new FilteringSelect({
        autoComplete: true,
        pageSize: 10
    },'characterNode');
 
});

注意dojo/parser被从依赖列表中移除了,因为编程式初始化控件不需要载入dojo/parser模块。我们可以用相同方法创建另外一个控件。

require([
    'dojo/domReady!',
    'dijit/form/FilteringSelect',
    'dijit/form/Textbox',
    'dijit/form/Textarea',
    'dijit/form/Checkbox',
    'dijit/form/RadioButton',
], function(domReady, FilteringSelect, Textbox, Textarea, RadioButton){
 
    var filteringSelect = new FilteringSelect({
        autoComplete: true,
        pageSize: 10
    },'characterNode');
 
    var input = new Textbox({/*options*/},'myInputNode');
    var textarea = new Textarea({/*options*/},'myTextareaNode');
    var mySelect = new FilteringSelect({/*options*/},'mySelectNode');
    var date = new DateTextBox({/*options*/},'myDateNode');
    var time = new TimeTextBox({/*options*/},'myTimeNode');
    var checkbox = new CheckBox({/*options*/},'myCheckboxNode');
    var radio1 = new RadioButton({/*options*/},'myRadio1Node');
    var radio2 = new RadioButton({/*options*/},'myRadio2Node');
});

如果你有一个庞大的form并且不想将所有的单独元素加入dijit控件中,你可以创建自己的迷你parser以便通过选择器来创建Dijits.

require([
    'dojo/domReady!',
    'dojo/query',
    'dijit/form/FilteringSelect',
    'dijit/form/Button',
    'dijit/form/CheckBox',
    'dijit/form/RadioButton'
], function(domReady, query, FilteringSelect, Button, CheckBox, RadioButton){
 
    query('button,select,input').forEach(function(node){
        var type = node.nodeName;
        if(type === 'INPUT'){
            type = node.type.toUpperCase();
        }
        switch(type){
            case 'BUTTON':
                new Button({},node); break;
            case 'SELECT':
                new FilteringSelect({},node); break;
            case 'RADIO':
                new RadioButton({},node); break;
            case 'CHECKBOX':
                new CheckBox({},node); break;
        }
    });
});

当然,这个简单的例子并不是把node属性转换成变量并且将其提供给控件,也不是dojo/parser的任何特殊功能。

访问dijit属性

访问某一个特定的DOM元素可以简单地用dojo/dom.byId方法完成。Dijit有他自己的dijit/registry.byId方法来获取注册了ID的Dijit控件。如果dijit控件拥有一个ID,控件ID 将会是同一个值。如果元素没有一个ID属性,一个控件ID将会被自动生成。如果我们想要获取上面用声明方式创建的“characterNode” Dijit控件,我们可以使用如下的代码:

require([
    'dojo/domReady!',
    'dojo/parser',
    'dijit/registry',
    'dijit/form/FilteringSelect'
], function(domReady, parser, registry, FilteringSelect){
    parser.parse();
    var filteringSelect = registry.byId('characterNode');
    console.log('filteringSelect', filteringSelect);
});


在firebug内使用registry.byId查看Dijit的所有方法和属性。

如果我们想要访问pageSize属性,我们可以用Dijit getter来访问:

var pageSize = registry.byId('characterNode').get('pageSize'); // returns 10

如果我们想要改变pageSize的值,可以使用如下代码:

registry.byId('characterNode').set('pageSize',20); //now pageSize is 20

注意:Dojo 1.5引入了“get”和“set”方法来处理属性。在Dojo 1.4或者更早,你可以在前面例子中的使用get和set的地方使用“attr”。


监听控件事件

Dijit控件使用dojo/on方法来监听给定控件上的DOM事件:

filteringSelect.on('change', function(value){
    console.log('value', value);
});

每个控件都支持一系列的事件所以请仔细查看文档以却确定你想要监听的事件是被支持的。

注意到它们是DOM事件是很重要的。如果你想要监听widget方法,你应该使用dojo/aspect:

require([
    'dojo/aspect'
    // other deps...
], function(aspect){
    aspect.after(filteringSelect, 'validate', function(value){
        console.log('validate', value);
    });
});

Dijit系列

Dijit也是一个杰出的UI库,它有潜力来增强你的网站并且节约你很多的时间。Dijit包括许多控件,包括:

  • 上下文,弹出,下拉菜单
  • 表单元素比如按键,勾选框,单选框和文本框
  • 日期和时间选择控件
  • WYSIWYG编辑器
  • 水平和垂直滑动条
  • 进度条
  • tab和Accordions
  • 树状结构(包括拖拽)
  • 对话框和提示
  • 布局控件

并且如果Dijit没有您需要的控件,很有可能在DojoX(Dojo Extensions)中有!如果想看上面提到的各种控件,请访问Dojo Theme Tester.






PCB阻焊工艺全解析:从油墨选择到显影测试的完整指南 本文深入解析PCB阻焊工艺全流程,从材料科学角度对比液态光成像(LPI)油墨、干膜阻焊等核心材料特性,系统阐述前处理、涂覆、预烤曝光、显影固化等关键步骤的工艺要点与参数控制。重点探讨了如何通过优化油墨选择与工艺参数,解决常见缺陷,提升PCB的可靠性、美观度及可制造性,为工程师提供从理论到产线实战的完整指南。 阅读详情

相关推荐

Cadence SpectreRF仿真避坑指南:PSS和Pnoise设置详解(附实战案例)

本文详细解析了Cadence SpectreRF中PSS(周期稳态分析)和Pnoise(周期噪声分析)的关键设置技巧,帮助模拟IC设计工程师避开常见仿真陷阱。通过实战案例分享,涵盖引擎选择、Beat Frequency计算、噪声类型配置等核心参数优化策略,提升仿真精度与效率。特别针对开关电容电路和振荡器等复杂场景提供专业解决方案。

weixin_42613501的博客 602

Dojo学习笔记(八):Dojo布局——面板

Dojo提供了多种基本的布局方式,使用这些布局,可以有层次,有意义的组织控件,使得 web 界面获得更好的用户体验。 Dojo提供布局小部件分为三类:面板、对齐方式容器和堆叠容器。 1、dijit/layout/ConentPane ContentPane,顾名思义,就是用于放置若干内容的面板,是各种布局的基本元素。Content...

weixin_33893473的博客 760

达芬奇Pro开发板硬件验证全流程指南

FPGA开发板硬件验证是嵌入式系统可靠性的基石,其核心在于理解SoC启动时序、IO资源映射与高速接口物理层约束。基于Xilinx Zynq-7000异构架构的开发平台,需围绕电源完整性、时钟稳定性、信号完整性及软硬协同启动链路展开分层测试。技术价值体现在规避量产失效率、支撑高可靠工业控制与实时图像处理等场景。典型应用涵盖千兆以太网通信验证、DVP摄像头与RGB LCD显示链路调试、以及SFP+光纤接口PRBS误码率测试。本文聚焦达芬奇Pro系列开发板,深入解析JTAG下载、QSPI Flash重烧录、RGM

weixin_42453228的博客 123

data-dojo-id, dijit/registry.byId() and dojo/dom.byId()

registry.byId 和 dom.byId 经常混淆, 尤其是初次使用者。 registry.byId 应当用于: 当你想直接引用某个部件的JavaScript对象以及访问这个部件的方法时。 dom.byId 应当用于:当你想直接访问一个DOM节点。 下面这个ContentPane部件有一个id属性(标准HTML属性)以及一个data-dojo-id属性(dojo 特有id属性):

earthhour的专栏 3576

基于AIS动态数据与AI结合得经纬度标示算法

港口船舶智能标注系统 本系统通过结合摄像头视频流和AIS船舶动态数据,利用AI技术实现船舶实时标注功能。系统架构包括视频流处理、AIS数据解析、船舶检测匹配和坐标映射转换等模块。关键技术步骤: AIS数据获取:通过本地接收机或网络API获取船舶位置、航速等信息 AI目标检测:采用YOLOv8等模型识别视频中的船舶 船舶匹配算法:通过位置投影或运动轨迹匹配视频目标与AIS数据 坐标映射:使用相机标定技术将经纬度转换为图像坐标 实时标注:在视频画面上叠加船名、位置等关键信息 应用场景包括港口监控、智能海事管理和

qianbo042311的博客 1809

QCM2290 PM-3 如何让mirco-usb支持关机充电

PM4125-3插入type-C触发开机进入关机充电的CC脚中断条件是否可以软件上屏蔽, 做到只通过VBUS中断即可触发进入关机充电模式,达到和PM4125-2的效果一样只要插入micro USB 就可以触发进入关机充电模式。硬件团队提议修改寄存器 SCHG_L_MISC_SYSOK_CFG 0x164A bit[4] 目前修改如下 — a/BOOT.XF.4.1/boot_images/QcomPkg/Library/PmicLib/target/Agatti_pmCocos/psi/pm_confi

墨染天玑的博客 443

Dojo,Dijit基本内容总结

dojo.declare dojo.declare在dojo中被广泛使用,理解它将对弄懂dojo的代码有很大帮助。简单的说,dojo.declare提供了一种声明类的方式,通过它可以很方便的扩展其他类: dojo.declare("com.abc.MyDataProvider", dojo.widget.ComboBoxDataProvider, { name: "My Da

笨得很想飞的专栏 1449

Node-RED系列(二二):使用dashboard搭配echarts制作漂亮的面板

在node-red中dashboard 是一个很常用的模块,其中它有一个chart节点可以用来制作一些图表,比如柱状图,折线图,饼图,但其中的图表并不是很美观,而且可配置项非常的少。 于是就有很多小伙伴找我做一套比较好看的图表面板,在对比了一下几个图表库,我选中了echarts。 不仅美观大方,而且非常容易集成,配置。下面先来看一下我做的效果。这里是直接做了四个折线图,第一个折线图有动态效果,第二个折线图是一个多线条的折线图,第三个折线图是在一个图例显示两个折线图。第二第三都可以用于数据对比。 第四个折线

知无涯 1万+

掌握 Dojo 工具包,第 5 部分: Dojo 的 UI 组件库 - Dijit

http://www.ibm.com/developerworks/cn/web/wa-lo-dojointro5/index.html Dijit 简介 从 Dojo 0.9 开始,Dojo 把 Widget 从 Dojo 的核心包中分离出来,组成 Dijit 。 Dojo 在 Dijit 中为 Widget 家族添加了多位成员,增强了 Widget 的实力的同时也加快了其在页面中的加载...

小头猪 506

台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)

*完整源码地址**:[https://github.com/billiards/pcol-core](https://github.com/billiards/pcol-core)(包含详细文档与示例)通过这个项目,我们不仅创建了一个游戏,更构建了一个**可扩展的物理引擎框架**,为网页端复杂物理模拟开辟了新的可能性。**在线体验**:[https://pcol.billiards](https://pcol.billiards)(支持移动端触控操作)clone.velocity.x *= -0.92;

Loving_enjoy的博客 2797

YOLOv11改进 | 注意力篇 | YOLOv11引入24年动态卷积块注意力(Dynamic-CBAM),并构建C2PSA_DynamicCBAM

1.Dynamic-CBAM介绍1.1 摘要:重度抑郁症是一种普遍而严重的心理健康状况,对您的情绪,思想,行动和对世界的整体感知产生负面影响。由于抑郁症的症状不明显,确定一个人是否抑郁是很复杂的。然而,他们的声音可能是我们可以识别抑郁症迹象的因素之一。抑郁的人会表现出不适、悲伤,他们可能说话缓慢、颤抖,声音中失去情感。在这项研究中,我们提出了动态卷积块注意力模块(DynamicCBAM),用于在注意力-GRU网络中通过分析人类的音频信号来分类情感。

tsg6698的博客 1002

java之gui索引窗口_【Dojo 1.x】笔记目录

学习笔记和教程是不同的,笔记是随心记,学到什么就写什么,我尽量按逻辑顺序写笔记。Dojo是什么?Dojo是这么一个JavaScript框架,区别于jQuery等小型类库,这个类库更合适于构建WebApp和功能繁多的应用页面,Esri的ArcGIS API for JavaScript就是用Dojo作为基底进行开发WebGIS页面的。而jQuery乃至现在火热的AngularJS、React、Vue...

weixin_29005499的博客 189

基于深度学习的野生菌菇检测识别分类系统(YOLOv8 + UI界面 + 数据集)

随着深度学习技术的迅猛发展,计算机视觉领域的应用得到了广泛的关注。野生菌菇的检测与识别是一个复杂而又有趣的问题,涉及到物体检测、图像分类以及自然语言处理等技术。本文将介绍如何基于YOLOv8模型,结合自定义UI界面与数据集,构建一个高效且精确的野生菌菇检测识别分类系统。首先,我们将介绍YOLOv8的原理与特点,然后详细描述如何构建和训练野生菌菇识别模型,并介绍如何为该系统设计UI界面,最终形成一个完整的系统。本文内容包括代码实现、模型训练及数据集准备等,旨在为有类似需求的开发者提供参考和帮助。目录摘要目录。

YOLO 1547

现代Dojo

现代Dojo 你可能已经从Dojo走了一会儿,或者你一直在努力,让您的旧的Dojo1.6应用程序1.10下工作,你会发现自己不知道是怎么回事。你经常听到“AMD”和“毫无根据”的言论,但你不知道该怎么做或者从哪里开始。本教程将帮你。 入门 Dojo1.7是Dojo Toolkit的明...

chuozi5114的博客 190

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

dojo dijit 心得

学习DOJO已有一个多月,现在来记录一下。 学习dojo之前,有一定的jquery基础。所以,印象里估计和jquery没差多少。直到我看了代码,我就蒙了。 在浏览器查看器里查看到的代码,和我在JSP写出来的东西几乎对不上。 我在控制台想通过标签的id,来取得这个对象。 居然有反应。心中不免小惊喜。可是问题来了。这个id=dojox_grid_enhanced_plug

Little_Goat的博客 630

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Dijit简介

从架构层次上来说,dijit位于dojo之上,“是Dojo中界面控件的总称,他们使用灵活而且易于理解。每个Dijit控件都是由Dojo类以及控件中使用的图片,CSS等资源文件共同组成。通过Dijit架构,可以方便的创建灵活、可扩展、可定制外观的控件”。(引用认识Dojo中的界面控件:Dijit )         dijit基本用法         dijit的用法有两种:一种是声明式(在H

feifei2211的专栏 1777

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

dojo.byId与registry.byId、dijit.byId

dojo.byId("")获取到的是dom之类的东西, 而registry.byid("")获取到的是dijit(dojo widget),要分清楚. registry在dojo的dijit/registry中。

qq_15167261的博客 1323

dijit 菜单教程

Dijit 菜单Dijit 是一个强大的框架,我们可以用来创建简介,专业的界面。有时,那意味着我们需要一个带有选项的菜单,带来我们像桌面应用一般的体验。有了wijit/Menu, 我们有了一个易于使用的强大的工具区创建这些界面。难度:初学者dojo 版本:1.8作者:Dylan Schiemann译者:Leslie (yurychika@gmail.com)原文:http://dojotoolki

Dojo中文博客 1万+

使用registry.byId来获取dgrid

没想到dgrid这获取时也有坑,困扰我了两三天,幸好有大神帮忙,问题才得到解决。这里记录下。 如果想使用registry.byId来获取dgrid,那么new的时候,需要混入'dgrid/extensions/DijitRegistry'这个扩展。 demo如下:          'dgrid/Grid',          'dgrid/extensions/DijitRegistry

yipanbo的专栏 1153

dojo控件FilteringSelect的使用经历

    最近在用dojo做一个项目的前台。版本是1.2.3,期间使用到了FilteringSelect这个下拉菜单控件。这个控件的功能不错,即可以像传统的select标签一样下拉选择,还可以让用户直接输入进行逐字搜索匹配。不过,东西毕竟是老外做的,使用时还是到了一些水土不服的问题,这些问题在网上搜过,但都没什么结果。现在有些问题解决了,有些没有很完美的解决。现在拿出来和大家一起分享和讨论一下。问题...

我在Java岛的日子 414

dojo之FilteringSelect

1、保证可视框宽度与下拉框宽度一致 forceWidth:'true' 2、控制下拉框的高度 maxHeight:'120'

牛栏山矿泉水 283

dojo 学习笔记之一 dom.byId dojo.byId registry.byId 的区别

在dojo中,除了沿用Dom结点, dojo 还自定义了一类结点用“dojoType" 进行标识。 dojo 称这些结点为widget。 当检测到HTMl文档中某个标签定义了dojoType 属性之后,dojo会调用dojo包中相应的 js 及 css 文件对这个结点进行渲染。 从而这个结点元素就会相应地显示出具有dojo特色的样式及功能。 如此说来, dom.byId 跟 dojo.byId

¥ = C^2 + C++ 6309

DOJO Dijit布局

Layout with Dijit Dijit布局 Creating dynamic and interactive layouts is a challenge common to any graphical user interface. We have a lot of ability to create layout with HTML and CSS. Where CSS lea

pyluyuan的专栏 2634

dojo 基础方法介绍

1、 dojo.data var dataStore = new dojo.data.ItemFileReadStore({ url: dojo.moduleUrl("dojox.geo.charting", "tests/datastore/dataStore.json").uri//来获取具体的uri地址 }); map.setDataStore(

applepie1的专栏 3355

dojo/domReady! 中感叹号的作用

废话其实不算个技术问题,但实在是花了我不少时间,不记下来都对不起我这浪费掉的几十分钟。问题在dojo官网上看教程,跟着做点练习,看到Dojo DOM Functions那节,有一个练习是改变页面上的列表(li)内容,于是我就写了如下代码:require(["dojo/dom", "dojo/domReady"], function(dom) { function setText(node, t

sheila1227的专栏 3553

dojo(五):Dijit-基本组件

简介 Dijit是Dojo的UI框架,包含一系列丰富的组件以帮助你快速开发Web程序。考虑到大部分Web页面都是表单元素(指允许用户输入的组件,通常会被传送到服务器进行处理)。Dijit有很多基于表单的组件,包括按钮、文本框、可校验文本框、进度条等等。 另外,Dijit包含了一个可用的主体框架来定义Dijit的视觉效果。Dijit有四个主题:Claro,Tundra,Soria和Nihilo.

TrendGrucee的专栏 5710
上一篇: Dojo中AMD模块化和本地变量的命名规范
下一篇: 庆祝Dojo中文博客获得优快云 2012年度博客之星称号!
dojotoolkit
博客等级 码龄16年 1205粉丝 61原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值