<%=%>标签是否会更改变量的类型?传递的变量在我的函数中不起作用

时间:2019-04-27 21:18:59

标签: ejs

我使用mongoose将来自mongoDB的信息传递给了我的ejs文件。从这里开始,我试图通过名为addMarker的函数循环数据,该函数使用<%=%>标记提取数据并将其添加到Google地图。

我已经通过将值及其“ typeof”打印到控制台来测试了这些值,它们表明它们是正确的(数字,数字,字符串)和正确的值。因此,我的假设是我传递值的方式无效或<%=%>标记正在更改变量的类型。我也尝试使用<%-和<%标签

ejs

<script> 
        function initMap(){
            //Map Options to dictate zoom and position
            var options = {
                zoom: 16, 
                center: {lat:35.6543936, lng: -97.4714266}
            }
            //init map for view
            var map = new google.maps.Map(document.getElementById('map'), options);

            /*var marker = new google.maps.Marker({
                position:{lat: 35.654243, lng: -97.472937 },
                map: map,
                title: 'Math And Computer Science'
            });*/

            //addMarker({coords:{lat:35.6543936, lng: -97.4714266}, title: "TestCase"});
            //addMarker({coords:{lat:35, lng: -97}, title: "TestCase2"});

            <% for (const location of results) { %>
               addMarker({coords:{lat: <%=location.lat %>, lng: <%=location.lng%> }, title: <%=location.title%> } );
               <%= console.log(location.lat) %>
               <%= console.log(typeof location.lat) %>
               <%= console.log( location.title) %>
            <% } %>


            //Add Marker Function
            function addMarker(props){
                var marker = new google.maps.Marker({
                    position: props.coords,
                    map:map,
                    title: props.title
                })
            }
        }
</script>

所以我已经注释掉了addMarker的测试:

            //addMarker({coords:{lat:35.6543936, lng: -97.4714266}, title: "TestCase"});
            //addMarker({coords:{lat:35, lng: -97}, title: "TestCase2"});

两者均按预期工作。当我在循环中运行addMarker时,地图显示出来,但地图上没有显示标记。

1 个答案:

答案 0 :(得分:0)

您可以在浏览器中查看脚本源,以查看生成的代码。

代码<%在服务器上执行,然后生成的js在浏览器中执行。

例如,您需要在“'”中包含标题,并在<%(例如console.log的示例)之外使用js函数:

         <% for (const location of results) { %>
           addMarker({coords:{lat: <%=location.lat %>, lng: <%=location.lng%> }, title: '<%=location.title%>' } );
           console.log( <%= location.lat %> ); 
           console.log( <%= typeof location.lat %> );
           console.log( '<%= location.title %>' ); 
        <% } %>