在创建自定义的dojo小部件的时候经常要使用模板文件,如果我们创建的小部件中内还有子小部件,那么我就需要在自定义的widget的模板文件中声明式的添加子小部件。下面我创建一个自定义的包含自小部件的widget。
创建的小部件比较简单,以下是小部件的模板文件:
<div>
<span dojoType="dijit.form.Button">
按钮控件
</span>
</div>
以下是小部件的js代码:
dojo.provide("iSpring.widgets.myFirstWidget.MyFirstWidget");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.require("dojo.cache");
dojo.declare("iSpring.widgets.myFirstWidget.MyFirstWidget",[dijit._Widget,dijit._Templated],{
_module:iSpring.widgets.myFirstWidget,
templateString:dojo.cache("iSpring.widgets.myFirstWidget","templates/MyFirstWidget.html")
});
以下是使用自定义小部件的前端代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="charset" content="utf-8"/>
<title></title>
<script type="text/javascript">
dojoConfig = {
parseOnLoad:true,
baseUrl:'./',
modulePaths: { 'iSpring': 'iSpring' }
};
</script>
<script type="text/javascript" src="http://localhost/jsapi28/"></script>
<link type="text/css" rel="stylesheet" href="http://localhost/jsapi28/js/dojo/dijit/themes/claro/claro.css" />
<script type="text/javascript">
dojo.require("dojo.parser");
dojo.require("iSpring.widgets.myFirstWidget.MyFirstWidget");
function init(){
var myFirstWidget = new iSpring.widgets.myFirstWidget.MyFirstWidget();
myFirstWidget.placeAt(dojo.body());
}
dojo.addOnLoad(init);
</script>
</head>
<body class="claro">
</body>
</html>
然后将网站发布,通过localhost的方式访问页面,结果如下:
发现我们创建的widget中的子小部件dijit.form.Button没有正确解析,样式不正确,只是显示了其中的文字内容,我在Chrome中打开Developer Tools查看其解析后的内容如下:
我们看到<span dojotype="dijit.form.Button">按钮控件</span>中并没有自动生成widgetid等属性,也就是说子小部件dijit.form.Button确实没有被dojo解析。
解决这个问题的方法是,在我们自定义小部件的MyFirstWidget.js文件中加入一个widgetsInTemplate属性,其值为true,如下图所示:
然后刷新页面,刷新后的页面如下:
可以看到子小部件dijit.form.Button已经正确解析。
widgetsInTemplate是dijit._Templated中的属性,表示模板文件中是否含有子小部件,该属性默认值为false,也就是说默认情况下dojo是不会解析模板文件中声明的子小部件的,只是会将其作为一般的html予以显示,要想将子小部件正确解析为widget,必须将widgetsInTemplate属性设置为true。
需要注意的是使用widgetsInTemplate 时可能会有额外的开销,可能会影响你的widget的性能,甚至整个页面的性能。如果你创建的widget中并没有自小部件,那么不用设置widgetsInTemplate属性或者将其设置为false。
分享到:
相关推荐
dojo dijit 小部件开发,将两个 Button 和一个 FilteringSelect 进行组合构成一个新的部件,便于开发部署,减少代码量.
超全!!grid 实例,calender实例,layout实例,textbox实例,下拉列表实例 。适合初学者 。。。文档中有dojo的使用说明,常用小部件的介绍,实例页面的代码说明
小部件 在 dojo 上测试小部件 我不是从头开始创建的,它是在线版本的复制品 这仅用于培训目的
dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程
一、 Dojo学习笔记(1. 模块与包) 1 二、 Dojo学习笔记(2. djConfig解说) 4 三、 Dojo学习笔记(3. Dojo的基础对象和方法) 6 四、 Dojo学习笔记(4. dojo.string & dojo.lang) 9 五、 Dojo学习笔记(5. dojo.lang.array ...
dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档 dojo文档
Dojo是一个非常强大的、面向对象的、开源的JavaScript工具箱,它为开发富客户端Ajax应用提供了一套完整的小部件和一些特效操作。曾经有人这样说:“对于一个Web开发者而言,如果没有Dojo,他将是一个“残废”的...
dojo js dojo js dojo js dojo js dojo js dojo js dojo js
DOJO中文手册【出自dojo中国】 页数60+ 简单介绍: Dojo 是一个用javascript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets, Burstlib, f(m)), 这也是为什么叫它a \"unified\" toolkit的...
dojo 一个小的例子,大家对dojo如果不是很了解的,可以针对这个例子来练习!!
深刻剖析Dojo工作原理,Dojo...第三部分讲述Dijit,即Dojo小部件系统;第四部分展示如何构建富因特网应用程序。书中各个部分都提供了真实有效的示例代码,并经过了测试。 本书适合具备基本Web编程经验的开发人员阅读。
ArcGIS JavaScript 打印小部件这是一个用于的 Dojo 打印小部件。 将使用打印服务生成地图的 PDF。 示例配置: { "name" : "print" , "path" : "widgets/print/print" , "options" : { "printUrl" : ...
学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源...
dojo.js.核心jsDojo.js核心dojo的javaScript类库Dojo.js核心dojo的javaScript类库Dojo.js核心dojo的javaScript类库Dojo.js核心dojo的javaScript类库
dojo资料dojo资料dojo资料dojo资料dojo资料
dojo中文文档下载。dojo中文文档下载。
Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo...
Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo...
Dojo Mobile 是基于 Dojo 的小部件集合,用于创建移动 Web 应用程序。使用 Dojo Mobile,您可以开发轻量级、高性能的移动 Web 应用程序
Dojo - Creating a custom widget创建自定义小部件 https://blog.csdn.net/nmj2008/article/details/113554363 博客的配套代码