dojo widget的实例化

创建自定义Dojo Widget实战指南 在现代Web开发中,Dojo Toolkit作为一个成熟的JavaScript框架,提供了丰富的组件和工具,帮助开发者构建高度交互的网页应用。通过封装UI组件,我们可以加快开发进度,提高代码的复用性和可维护性。本章将概述Dojo Toolkit的特性,并介绍如何封装一个高效的UI组件,这将为接下来详细讨论Widget创建流程打下基础。在开始创建自定义Widget之前,首先需要搭建一个合适的开发环境,并对项目进行初始化。 阅读详情

dojo用户通过实例化widget类型来创建界面上表现的各个widget实例,实例化的方式有两种可以选择:

  • javascript 形如:
    var properties = {<Attribute>:<Value>,<Attribute2>:<Value2>}; dojo.widget.createWidget("DojoWidgetTypeName", properties, DomNodeAsContainer);  
  • html 形如:
    <div id="..." dojoType="<DojoWidgetTypeName>" widgetId="<ID>" [<Attribute>="<Value>"]>  </div> 

这里的DojowidgetTypeName是要实例化的widget类型的名字,它可以不和实现该widget类型的javascript类名相同。

某些widget可能需要用户提供一些数据才能工作,而且大部分的widget都是可以定制的,如何把这些数据传给要创建的widget呢?这里javascript的方式使用了一个object变量,而html方式则使用的是xml element的attribute,不过结果是相同的:在某个属性上指定的值都会进入javascipt类上声明的同名属性中。当然如果你设置了一个javascript类上未声明的属性是不会有任何效果的,因此你常常需要知道某个widget都有哪些属性,http://www.get-the-answer.info/files/DojoWidgetOverview.pdf也许是个不错的参考。

不管那种实例化方式,结果都产生了一个代表该widget实例的javascript对象,该对象持有一个DOM node,为其在页面上的表现,我们称之为widget node;widget的效果就是由javascript对象操纵其widget node来实现的。widget node是怎么生成的呢?

大部分的widget类型都有一个template,是该widget类型表现在页面上的html/css代码的轮廓,一般以文件的形式存放在src/widget/template目录下,实例化的的一个主要步骤是根据实例化的参数填充template,从而生成widget实例的html代码。填充的方式当然是通过DOM了,这就需要持有template的node的引用,可以在template里使用dojoAttachPoint把该node连接到相应widget类的属性上,如:

<div id="${this.widgetId} dojoAttachPoint="wizardNode">
...
</div>

填充完template后,还需要把该填充后的node放到页面的DOM树中,这样得到的node就是widget node了。

若想在template里输出widget类上的某些属性值,可以用${this.<PropertyName>}的语法,比如很多widget都把widget类上的widgetId属性值作为element的id attribute的值,如上例。

对没有template的widget如ContentPane,当用html实例化时,其表现在页面上的html代码就是实例化的html代码,但一样会生成相应的widget对象,可以用来实现一些动态效果。

当然浏览器是不认识dojo形式的html的,html的实例化方式能够工作是因为在页面被加载之后、显示之前,dojo对页面上的html实例化方式进行了处理:在填充template后,用其替换页面上创建widget的那个node(source node),从而得到widget node;如果该widget是一个container,接着还会处理其source node下的子html的实例化方式,实例化相应的子widget并建立它们和container widget的关系。因此,我们最终看到的页面实际上是经过dojo处理过的页面,不是从服务器取回的原始页面。

Dojo Widget标签开发全攻略:共建模块化Web组件 为了实现继承策略,我们需要定义一个基础Widget,并在此基础上创建新Widget。使用declare,我们可以在新的类中覆盖或添加属性和方法,以达到定制的目的。假设我们已经有一个基础的BaseWidget,我们可以通过继承它来创建一个更具体的Widget:// 可以添加额外的初始化逻辑});通过这种方式,我们实现了Widget的继承,并且可以在新Widget中扩展功能和行为。是一种在JavaScript中使用反引号(`)来定义多行字符串和内嵌表达式的语法。 阅读详情

相关推荐

VueJsDojo

VueJsDojo VueJs(V.2) =>前端库ที่เอาไว้ทำWeb应用程序โดยใช้Javascriptในการเขียน Basic For VueJs Vue Instance Directives Methods Data-Binding Events Filters Computed Properties Components Component Lifecycle

在 Vue.js 中使用任意 JavaScript 第三方库

方法一:使用全局变量在浏览器运行js所有的变量都会变为window对象的属性,因此我们可以把第三方的类库,定义为window的属性,这样在任何位置都可以使用window.lodash = require('lodash');这样在每个组件中都可以直接使用lodashexport default { created() { console.log(lodash.isEmpty() ? 'L

shooke笔记 4460

【学习笔记】人群归因分数 PAF 以及combined PAF(更新)

在此推荐2篇发表在lancet以及jama子刊上的paf文章,这两篇文章套路是一样的,只是在不同国家进行。希望对大家学习PAF有所帮助,后面有新内容也会继续分享,也欢迎大家分享使用R语言计算PAF的经验~~~的时候,先建立了相关矩阵,再做主成分分析,得到communality。详细信息大家可翻阅原文。

weixin_53499537的博客 1498

前端选型

构建前端框架概述 Dojo/Vue/React/React Native针对PC端/移动端对比的选型方案 技术成熟度,技术可行性等等 了解EPEC的页面样式风格、页面操作风格,根据选型结果,基于框架做PC端/移动端原型。 1.三大框架对比 PC端 名称 react vue dojo 基本介绍 React于2013年3月首次发布,被描述为一个JavaScript库。React由Fac...

weixin_40878286的博客 465

保姆级教程:在Ubuntu 20.04上从源码编译Apollo自动驾驶平台(含GPU环境配置)

本文提供了一份详细的Ubuntu 20.04上从源码编译Apollo自动驾驶平台的保姆级教程,包括GPU环境配置、Docker部署和编译构建等关键步骤。通过实战经验和避坑指南,帮助开发者高效完成Apollo平台的编译和验证,适用于自动驾驶技术研究和应用开发。

weixin_30876945的博客 409

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2971

从零开始的VUE项目-06(字符拦截和地图功能:点聚集、热力图)

今天先改一下错, 1,查看一下后台的所有Controller.ce文件,看一下下面代码里面 string sqlCconnStr = "server=localhost;port=xxx;user=zydbuser;password=xxx; database=xxx;charset=utf8"; charset=utf8是否加上了,没加上的话要加上,不然在查询或是新增时会出现结果为空。 2,第二点是之前做的字符拦截,是对用户输入判断,特殊字符变为空,可是如果用户不输入,直接在.

木卯彳亍的博客 750

用Python和CasADi实现高斯伪谱法:一个轨迹优化问题的保姆级教程

本文详细介绍了如何使用Python和CasADi框架实现高斯伪谱法解决轨迹优化问题。通过保姆级教程,从环境准备、问题建模到高斯伪谱法的核心实现,包括配点与权重计算、微分矩阵构造和动力学约束实现,最终完成问题求解与结果可视化。适用于机器人轨迹规划和无人机路径优化等工程场景。

weixin_30776273的博客 294

django学习(二)之分页、vue.js数据绑定及模态对话框的使用

最近,学习Python Django部分,需要分页、模态框运用、及vue.js数据绑定 实现效果如下:       一个模拟学生信息展示的界面,通过‘添加学员’的按钮弹出学员注册的模态框 代码实现如下: 1、index.html: html> lang="en"> charset="UTF-8"> Title type="text/j

yin8809的博客 2462

Win11用户文件夹中文名修改全攻略

本文详细介绍了Windows 11系统中修改中文用户文件夹名称的完整步骤。操作包含七个关键环节:前期数据备份、账户名称修改、管理员账户激活、用户文件夹重命名、注册表路径更新、收尾操作及注意事项。特别强调需要同步修改账户名、文件夹名和注册表关联路径,并建议操作前备份重要数据。文中还针对常见问题提供了解决方案,如软件报错时的符号链接创建方法。整个过程需谨慎操作,建议在管理员权限下逐步执行,修改完成后需验证系统及软件功能是否正常。

Qinti_mm的博客 3123

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

dojo1.x之小部件widget创建实例(使用自带的widget)-使用data-dojo-type属性在div中声明

创建完widget之后,要实例化。 有一种方法是直接在div中使用属性data-dojo-type来定义实例化。但是如果仅仅是在data-dojo-type属性中传入widget.js类是不够的。 还需要parser,虽然我不知道parser是什么意思。但是使用了parser就可以显示了。 <body class="claro"> <div id="btn1" data-dojo-type="dijit/form/Button" data-dojo-props="la

nmj2008的博客 455

量化交易python代码解析:从狙击手算法到最优限价算法

在金融市场的竞技场上,量化交易如同一位冷静的策略大师,它以数学模型为剑,以计算机程序为盾,精准出击,捕捉市场的微妙波动。本文将深入探讨五种核心量化交易算法:直接委托算法(DMA)、时间加权平均算法(TWAP)、冰山算法(Iceberg)、狙击手算法(Sniper)、条件委托算法(Stop)以及最优限价算法(BestLimit),揭开它们背后的运作机制与实战应用。

木头大左的博客 1887

Dojo中Dijit组件Widget的生命周期

FYI:http://www.360doc.com/content/10/1012/14/3103730_60358932.shtml Dojo所开发的控件具有很强的内聚性和面向对象性。 [b]dojo的dijit._widget是dojo提供的图形界面组件库。[/b] 首先从dijit组件的核心类dijit._Widget开始。dijit._Widget是所以dijit组件的...

j2ee_zhongqi的专栏 188

巡检机器人的基于ROS系统的任务管理架构设计总结

本文探讨了基于ROS(机器人操作系统)的工业巡检机器人任务管理架构设计,提出分层闭环方案。架构围绕稳、准、活、扩四大目标,分为感知层(多源数据融合)、调度层(智能决策)、执行层(动作控制)和数据层(存储交互)。关键技术包括ROS2实时性优化、功能包复用和多机器人协同调度。实践案例显示,该架构在电力巡检中使任务完成率达99%,在化工园区实现95%覆盖率。当前挑战包括SLAM地图漂移和多机通信延迟,未来可通过语义SLAM和区域通信优化。

start_up_go的博客 476

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Dojo定义的生命周期

Dojo所开发的控件具有很强的内聚性和面向对象性。dojo的dijit._widget是dojo提供的图形界面组件库。     首先从dijit组件的核心类dijit._Widget开始。dijit._Widget是所以dijit组件的父类,dijit默认提供的组件和自己开发的组件都要继承此类。dijit._Widget提供了对组件生命周期的管理。dijit组件生命周期管理在实现的时候使

纪争光 6031

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Dojo生命周期

Dojo所开发的控件具有很强的内聚性和面向对象性。 dojo的dijit._widget是dojo提供的图形界面组件库。 首先从dijit组件的核心类dijit._Widget开始。dijit._Widget是所以dijit组件的父类,dijit默认提供的组件和自己开发的组件都要继承此类。dijit._Widget提供了对组件生命周期的管理。dijit组件生命周期管理在实现的时候使用了 template method设计方式。dijit._Widget的create()方法定义了默认模版。开发人员也可以覆盖

YBZ_优快云的博客 229

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Dojo,Dijit基本内容总结

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

笨得很想飞的专栏 1449

Dojo学习笔记(二十):理解_WidgetBase

如果你使用过dojo早期的版本,你可能对dijit/_Widget模块熟悉。虽然dijit/_Widget目前仍然存在,但是它经继承自_WidgetBase。在你从底层开始创建自定义小部件的时候,目前最好是直接继承_WidgetBase,dijit/_Widget很可能在2.0的版本中被淘汰掉。 理解Dijit系统的关键在于对小部件的生命周期的理解,小部...

weixin_34250434的博客 212

系统优化之Dojo优化策略--页面加载机制优化

    随着Dojo的名声越来越大,更多的开发者选择使用Dojo作为前端开发的框架。虽然Dojo是一种异步框架,能够借助各种ContentPane快速的搭建起开发框架,并实现异步通信,但有时一个模块包含的内容过多,造成此页面的内容过多,打开该页时就会导致内存飙升,长时间没有响应等问题。下图所示为一业务模块的页面结构图。                在View区域中,包含了多个Widg...

weixin_34137799的博客 195

Dojo之Widget标签开发

Dojo widget就像是jsp中的自定义标签,通过学习开发widget标签来对其使用及其设计原理有更好的了解。本文主要是对Develop HTML widgets with Dojo一文的学习和翻译。 1. Dojo widget的概念 正如上所述,dojo widget就像是jsp中自定义标签,只是dojo widget是在客户端使用的(本文中统一简称dojo widge...

hck341204的专栏 512

Dojo widget 系统 - dijit._WidgetBase类(1)

Dojo 里所有的小部件(Widget)都会直接或间接的继承 dijit._Widget / dijit._WidgetBase dijit._Widget 是 dojo 1.6 和 1.6之前的版本的基类, 在 dojo 1.7 之后的版本, 官方建议直接继承 dijit._WidgetBase 类(继承 dijit._Widget 也可以, dijit._Widget 继承了 dijit._

Patrick's 专栏 3810

学习Ajax框架之dojo:第七节——初识Dojo widget(附源代码)

widget在越来越多的web应用中出现,那么,什么是widget?widget使用什么样的标记方式进行声明的呢?widget可以动态创建吗?widget有哪些常用的方法和属性呢?……这一系列的问题不由自主的浮现在脑海,下面,让我们来共同学习一下吧。 学习一:widget的含义 widget的英文含义是装饰物或者小器具,有些技术文档将其译为小部件,...

aeon521730041的博客 249
上一篇: locale,中文的显示和输入,字体和emacs
下一篇: X字体
hansoft
博客等级 码龄23年 6粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值