ArcGIS Web客户端开发(附录)关于Dojo的基本知识

来源:互联网 发布:北京知金教育 编辑:程序博客网 时间:2024/06/06 18:42

附录:关于Dojo的基本知识

    ArcGIS API for JavaScript是基于Dojo开发的, Dojo包括按钮、格网、树、图表和其他的界面组件,并主要由3部分组成:

1Core-核心包;

2Dijit-主题界面组件;

3DojoX-各种扩展组件,如图表等。   

ArcGIS API for JavaScript完全支持利用异步模块定义(Asynchronous Module DefinitionAMD)风格的代码创建JavaScript对象和模块。由于使用DojoJavascript的部分能力进行了封装,因此,要理解其原理,必须理解以下几个Dojo命令,这都属于Dojocore部分,由于Dojo也在不断发展,需注意现行版本与以前的区别。

     1dojo.require:类似 <script>标签,用于从特定包中导入JS脚本到当前脚本页。

...

// legacy

dojo.require("esri.map");

// AMD

require(["esri/map", ... ], function(Map, ... ){ ... });

...

因此,如果在后续脚本中用到API的对象或方法等,都应用require先申明一下,如:

    ....

    require([

        "esri/map",

        "esri/tasks/GeometryService",

        "esri/layers/ArcGISTiledMapServiceLayer",

        "esri/layers/FeatureLayer",

        "esri/Color",

        "esri/symbols/SimpleMarkerSymbol",

        "esri/symbols/SimpleLineSymbol",

        "esri/dijit/editing/Editor",

        "esri/dijit/editing/TemplatePicker",

        "esri/config",

        "dojo/i18n!esri/nls/jsapi",

        "dojo/_base/array", "dojo/parser", "dojo/keys",

        "dijit/layout/BorderContainer", "dijit/layout/ContentPane",

        "dojo/domReady!"

      ], function(

         Map, GeometryService,

         ArcGISTiledMapServiceLayer, FeatureLayer,

         Color, SimpleMarkerSymbol, SimpleLineSymbol,

         Editor, TemplatePicker,

         esriConfig, jsapiBundle,

         arrayUtils, parser, keys

       ) {

      //代码区

   });

 

 

     2dojo.ready (or dojo.addOnLoad):类似 <body onload="">标签.它帮助注册页面加载时初始化的脚本模块。

...

// legacy

dojo.ready(init);

 

// AMD

require(["dojo/ready"], function(ready){

   ready(function(){

    // This function won't run until the DOM has loaded and other modules that register have run.

   });

});

...

     3dojo.connect:类似DOM组件的JavaScript函数Element.addEventListenerElement.attachEvent。 主要用于登记页面中或页面特定组件的事件、消息处理函数。

       ...

// legacy

dojo.connect(myMap, "onLoad", myLoadHandler);

 

// AMD

require(["esri/map", "dojo/on"], function(Map, on) {

  // ...

  on(myMap, "load", callback);

});

...

    4dojo.byId:类似 JavaScript函数document.getElementById(id),主要用于通过id获得页面中对象id

 ...  

dojo.byId("myInputField").value = myMap.id;

...

0 0
原创粉丝点击