2013-10-22 38 views
1

在Firefox中開發Web地圖應用後,我在Internet Explorer(公司標準)中測試了我的代碼,發現dijit/form/Select使用最新Esri JavaScript v3.7。dijit/form/Select在Internet Explorer中使用Esri破壞Javascript 3.7

我看到的問題是,使用v3.7時,Select不會從列表中的第一個選項更新/更改。如果我將版本降低到3.6,它可以按預期工作。

我已經嘗試過從7到10的IE瀏覽器模式,並且在他們之間經歷了相同的行爲。有人可以證實他們正在經歷同樣的事情嗎?

在實施例3.7 - http://jsbin.com/aVIsApO/1/edit

在實施例3.6 - http://jsbin.com/odIxETu/7/edit

碼塊

var url = "http://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/Street_Trees/FeatureServer/0"; 
var frmTrees; 
require([ 
    "esri/tasks/query", 
    "esri/tasks/QueryTask", 
    "dojo/dom-construct", 
    "dijit/form/Select", 
    "dojo/parser", 
    "dijit/registry", 
    "dojo/on", 
    "dojo/ready", 
    "dojo/_base/connect", 
    "dojo/domReady!" 
], function(
    Query, 
    QueryTask, 
    domConstruct, 
    Select, 
    parser, 
    registry, 
    on, 
    ready, 
    connect 
) { 

    ready(function() { 

     frmTrees = registry.byId("trees"); 

     var qt = new QueryTask(url); 
     var query = new Query(); 
     query.where = "FID < 25"; 
     query.orderByFields = ["qSpecies"]; 
     query.returnGeometry = false; 
     query.outFields = ["qSpecies", "TreeID"]; 
     query.groupByFieldsForStatistics = ["qSpecies"]; 
     //query.returnDistinctValues = true; 
     qt.execute(query, function(results) { 
      //var frm_domain_area = dom.byId("domain_area"); 
      var testVals = {}; 

      for (var i = 0; i < results.features.length; i++) { 
       var id = results.features[i].attributes.TreeID; 
       var desc = results.features[i].attributes.qSpecies; 
       if (!testVals[id]) { 
        testVals[id] = true; 
        var selectElem = domConstruct.create("option",{ label: desc + " (" + id + ")", value: id }); 
        frmTrees.addOption(selectElem); 
       } 
      } 
     }); 

     frmTrees.on("change", function() { 
      console.debug(frmTrees.get("value")); 
     }); 
    }); 

});  

回答

1

不用創建DOM元素和傳遞的,要的dijit /形式/ Select.addOption,傳遞具有標籤和值屬性的簡單對象:

qt.execute(query, function(results) { 
    //var frm_domain_area = dom.byId("domain_area"); 
    var testVals = {}; 

    for (var i = 0; i < results.features.length; i++) { 
     var id = results.features[i].attributes.TreeID; 
     var desc = results.features[i].attributes.qSpecies; 
     if (!testVals.hasOwnProperty(id)) { 
      testVals[id] = true; 
      var label = desc + " (" + id + ")"; 
      frmTrees.addOption({label: label, value: id}); 
     } 
    } 
}); 

工作示例(本地複製,這部作品在IE8但不是在IE8上jsbin):http://jsbin.com/eKULIgu/1/edit

+0

看起來如果你點擊jsbin「編輯」環境之外在新窗口中打開該選項,將工作。建議的代碼很好,解決了這個問題。 – disuse

+0

很高興我能幫忙! –