0

我正在使用 JS API 3.5。

我的网络应用程序中有一个编辑器小部件。当我在小部件中单击新选择时,它会引发错误“未捕获的类型错误:无法读取未定义的属性“preventDefault”

在 Chrome 和 Firefox 中,即使控制台日志出现此错误,我也可以绘制并继续,但是 IE 11 会因此异常而中断。

确切的错误消息是http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/中第 34 行第 471861 列的未处理异常

0x800a138f - JavaScript 运行时错误:无法获取未定义或空引用的属性“preventDefault”

在 IE 调试文件中,代码看起来像 e 的值未定义。

_onClick:function(e){
        var ok=this.inherited(arguments);
        if(ok)
        {
           if(this.valueNode)           
        {           
          this.valueNode.click();
          e.preventDefault(); //e is undefined
          e.stopPropagation();}
        }
           return ok;
        }

我不知道如何处理此异常,因为我无法在源代码中找到它。

下面包括创建编辑器小部件的代码:

          require(["esri/dijit/editing/Editor",
                "esri/dijit/editing/TemplatePicker",
                 "dojo/domReady!"], lang.hitch(this, function (Editor, TemplatePicker) {

          console.log("click on new Editor => " + ops);
          this.editor = new Editor({
            'settings': ops
          }, editorContainer);
          this.editor.startup();
        }));

我尝试了以下方法,但没有成功: - 包括“dojo/domReady!” 在调用编辑器小部件之前 - 已更改

请帮忙!

这是调用编辑器小部件 onClick 的代码:

   define([
     'dojo/_base/declare',
     'dijit/_WidgetBase',
     'dijit/_TemplatedMixin',
     'dijit/_WidgetsInTemplateMixin',
      'dojo/_base/lang',
      'dojo/dom-construct',
         'dojo/domReady!'], function (declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, lang, domConstruct) {

  return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
      templateString: '<div class="gis_GeoLocation_Dijit"><div style="text-align:center;"><button data-dojo-type="dijit/form/Button" data-dojo-attach-event="onClick:toggleEditing" data-dojo-props="label:\'Start Editing\',baseClass:\'geoLocationButton\'" style="background-color:#ECECEC;" data-dojo-attach-point="toggleBTN"></button></div><div style="margin-top:5px;" data-dojo-attach-point="containerNode"></div></div>',
    widgetsInTemplate: true,
    editor: null,
    isEdit: false,
    templatePicker: null,

    toggleEditing: function () {
      if (!this.isEdit) {
        var ops = lang.clone(this.settings);
        ops.map = this.map;
        ops.layerInfos = this.layerInfos;

        var templatePickerOptions = this.templatePickerOptions;
        templatePickerOptions.featureLayers = this.templatePickerFeatureLayers;

        // create container for Editor
        var editorContainer = domConstruct.create("div", {
          innerHTML: '<img style="display:inline;" src="data:image/gif;base64,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"/>',
          "style": "text-align:center;"
        }, this.containerNode, "only");

        require(["esri/dijit/editing/Editor",
                "esri/dijit/editing/TemplatePicker",
                 "dojo/domReady!"], lang.hitch(this, function (Editor, TemplatePicker) {

          //if (templatePickerOptions != null) {
          //  console.log("new TemplatePicker => " + templatePickerOptions);
          //  this.templatePicker = new TemplatePicker(templatePickerOptions, templatePickerContainer);
          //  this.templatePicker.startup();
          //  ops.templatePicker = this.templatePicker;
          //}

          console.log("click on new Editor => " + ops);
          this.editor = new Editor({
            'settings': ops
          }, editorContainer);
          this.editor.startup();
        }));

        this.map.enableSnapping({
         tolerance: 20,
          snapKey: dojo.keys.ALT
        });

        this.toggleBTN.set('label', 'Stop Editing');
        this.isEdit = true;
      } else {
        this.editor.destroyRecursive();
        this.toggleBTN.set('label', 'Start Editing');
        this.isEdit = false;
        this.editor = null;
        this.templatePicker = null;
      }
    }
  });
});
4

0 回答 0