首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这里有必要使用eval函数吗?

在这里有必要使用eval函数吗?
EN

Stack Overflow用户
提问于 2021-06-05 13:54:06
回答 1查看 65关注 0票数 1

我想问一问,在这段代码中省略eval ()函数是否合理。特别是

代码语言:javascript
复制
  <script>
...
...

        function addGeoJson (geoJsonPath, iconPath = "leaflet-2/images/marker-icon.png", iconSize = [30,50], popUpContent, sideBarContent)
         
        {$.getJSON(geoJsonPath,function(data){
        
          var geoIcon = L.icon({
                        iconUrl: iconPath,
                        iconSize: iconSize
                        });
      
        L.geoJson(data,{
          pointToLayer: function(feature,latlng){
            var marker = L.marker(latlng,{icon: geoIcon, riseOnHover: true});
            
            marker.bindPopup(eval(popUpContent));
            
            marker.on('mouseover',function() {
              document.getElementById('sidebar').innerHTML = eval(sideBarContent);
            });
            
            marker.on('mouseout', function(){
              document.getElementById('sidebar').innerHTML = " ";
            });
            
            return marker;
          }
           
        }).addTo(map);
      });
      };

var layer1pop = "feature.properties.name + '<br/>' + feature.properties.info";
var layer1side = "feature.properties.price + '<br/>' + feature.properties.web";

addGeoJson("points.geojson", undefined, undefined, layer1pop, layer1side);

...
...
</script>

我想用多个addGeoJson文件重用geoJSON函数,并且每个文件都有不同的标记、弹出、侧边栏等模板。在我看来,切换似乎不够,以防我不知道geoJSON可以拥有多少属性,如果我需要在弹出窗口中更改属性项的顺序,例如,我可以只编辑addGeoJson基金的参数。如果我试图通过,会出现一个错误。

代码语言:javascript
复制
var layer1pop = feature.properties.name + '<br/>' + feature.properties.info;
var layer1side = feature.properties.price + '<br/>' + feature.properties.web;

直接因为不可能到达本地feature,并且在传递参数时甚至不存在。我试图用new Function替换它,但也无法联系到feature

你有什么想法吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-05 15:00:11

为什么不将行marker.bindPopup(eval(popUpContent));改为marker.bindPopup(feature.properties.name + '<br/>' + feature.properties.info);

并将相同的逻辑应用于第二个函数。

如果有什么东西阻止了你,就重写它,让它起作用。

伊瓦尔是个恶毒的暗号

如果映射不断变化(即您将使用的feature的哪个部分),则尝试传递一个知道要提取什么的函数

代码语言:javascript
复制
var layer1pop = function(feature){
 return feature.properties.name + '<br/>' + feature.properties.info;
}

然后marker.bindPopup(eval(popUpContent));变成marker.bindPopup(popUpContent(feature));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67850297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档