Webappbuilder自定义widget模板
Webappbuilder自定义widget模板
by 李远祥
- 到\\widgets\samplewidgets目录下拷贝 CustomWidgetTemplate 文件并重命名为MyWidget

- 设置widget的类名。在MyWidget 目录下打开Widget.js ,将baseClass 改为
baseClass: 'jimu-widget-mywidget' 如下图

- 自定义widget的UI界面。在Widget.html 文件中可以添加其widget的界面。可以尝试将以下代码加入到这个html页面中。

- 将自定义的widget注册到应用中。打开stemapp/sample-configs 文件,找到widgetPool->widgets ,添加一个节点内容,然后保存文件

- 测试widget 。 打开 http://[your host name:3344]/webappviewer/?config=sample-configs/config-demo.json 点击图标,出现其图标,操作结果如下

- 让widget变得更加灵活可配
a.打开MyWidget 文件夹下的 config.json 文件,添加json的结构文本到查建中,如下

b. 将原来的widget.html 页面代码改为,让其可以直接读取配置的关键变量

c.打开第5步的测试连接,查看修改的内容。Widget的内容则变为config文件对应的变量。
- 让界面更加友好一些。一般来说,html的界面布局和美化都使用css文件,widget同样可以使用CSS文件来让整个界面变得比较美观。打开css/style.css 文件,增加css代码到该文件中,如下图所示:

该代码的作用是将页面的第一个div标签的内容设置为红色。这样做的好处是更好的结构化,让美工人员参与到应用程序的开发过程中。其最终的效果如下

- 访问地图
- 打开widget.js文件,删除startup函数的注释

- 修改widget.html的页面代码,加入map ID 属性,如下图

- 重新刷新页面,可以看到map空间的ID被现实出来
- 最终的结果是读取了应用中map控件的ID

- 国际化支持
可以通过编写配置文件去适配多国语言。例如前面所用到的插件是英文的提示"This is my widget" and "This is configurable" ,可以通过编写MyWidget文件夹的配置文件去实现中文本地化。
- 打开nls/strings.js 文件,增加以下代码

- 在nls目录下创建子文件夹 zh-cn ,如图所示

- 将string.js 拷贝到zh-cn文件夹中
- 修改zh-cn/strings.js 文件里面的内容,如下

- 将widget.html的内容修改为读取配置代码,如下图

- 重新刷新页面即可查看到中文的配置。效果如下图

- 部署widget
- 打开MyWidget文件夹里面的 manifest.json 文件,更改里面的属性,如name、author、description等,其中name属性必须与widget的文件夹名称相同。

具体的每个属性可以查看网址 https://developers.arcgis.com/web-appbuilder/guide/widget-manifest.htm 的说明。
- 将MyWidget 文件夹拷贝到\stemapp\widgets 文件夹下,启动node.js(最快的港式是直接打开webappbuilider文件夹下的start.bat文件),输入http://[your host name:3344]/webappbuilder,这样在使用webappbuilder创建应用的时候就可以使用自定义的widget了。如下图在微件选择的时候就会出现定义的插件

Webappbuilder自定义widget模板的更多相关文章
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
- yii2——自定义widget
参考资料:http://www.bsourcecode.com/yiiframework2/how-to-create-custom-widget-in-yii2-0-framework/ 如何使 ...
- VS自定义项目模板:[2]创建VSIX项目模板扩展
VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...
- dedecms如何自定义专题模板
很多人看到别人的网站也是用dedecms建的,但是他们的专题做得很漂亮,也在想如何自定义dedecms专题模板呢? 其实很简单,只要在dedecms默认专题模板上做一些修改就好了 <!DOCTY ...
- android自定义UI模板图文详解
不知道大家在实际开发中有没有自定义过UI模板?今天花时间研究了一下android中自定义UI模板,与大家分享一下. 每个设计良好的App都是自定义标题栏,在自定义标题栏的过程中大部分人可能都是自定义一 ...
- Android Studio自定义注释模板及生成JavaDoc
刚开始学习Android,使用了Android Studio IDE.为了将来生产JavaDoc,学习一下如何自定义注释模板. . 自定义注释模板 1. 通过 File –>Settings 或 ...
- ThinkPHP框架配置自定义的模板变量(十)
原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当 ...
- WebAppBuilder自定义主题
WebAppBuilder自定义主题 by 李远祥 基本步骤: 创建新主题的文件夹 注册新的主题到manifest.json 文件 覆盖HeaderController 部件的颜色. 覆盖panel的 ...
- Pycharm 自定义文件模板
Pycharm 自定义文件模板 每次新建文件都有相同的代码框架,每次重复敲浪费了程序员的寿命啊 按照下面方式自定义自己的模板:
随机推荐
- POJ 1015 Jury Compromise
感觉此题略难...... 背包问题.据说有一种二维DP的写法是错的.亲测,背包做法无误. dp[i][j][k]表示前i个物品,选择j个,差值为k的情况下获得的最大总和 dp[i][j][k]=max ...
- Java Base64、AES、SHA1、MD5加密算法(转载)
package com.example.decript; import java.io.UnsupportedEncodingException; import java.security.Inval ...
- 基于FPGA的OLED真彩色动态图像显示的实现
源:基于FPGA的OLED真彩色动态图像显示的实现 作为第3代显示器,有机电致发光器件(Organic Light Emitting Diode,OLED)由于其主动发光.响应快.高亮度.全视角.直流 ...
- python遍历字典元素
a={'a':{'b':{'c':{'d':'e'}},'f':'g'},'h':'i'} def show(myMap): for str in myMap.keys(): secondDict=m ...
- HDU 3903 Trigonometric Function
这题真难,并不会推理... #include<cstdio> #include<cstring> #include<cmath> #include<algor ...
- adapter中报错:Can't create handler inside thread that has not called Looper.prepare()
http://stackoverflow.com/questions/9357513/cant-create-handler-inside-thread-that-has-not-called-loo ...
- 在asp.net中使用ajax记录
一.问题描述 ajax在mvc中使用频繁,比如cms中的评论功能,但由于涉及到前后端开发,日久容易忘,在此做下记录. 二.内容 控制器中代码示例: /// <summary> /// 在文 ...
- simplexml 对xml的增删改操作
simplexml 是php 处理xml 文件的一个方法,另一个是dom 处理,这里只说simplexml .目前php 处理xml 用的比较多,比较成熟的还是dom .但dom 在速度和代码量上还是 ...
- js模块化开发——模块的写法
随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...
- NodeMCU之旅(二):断线自动重连,闪烁连接状态
事件监听器 NodeMCU采用了事件响应的方式.也就是说,只需为事件设置一个回调函数,当事件发生时,回调函数就会被调用. 注册事件监听器 wif.sta.eventMonReg() 开始监听 wifi ...