编程语言
首页 > 编程语言> > javascript-在JS脚本中使用Django模板标记是否可以

javascript-在JS脚本中使用Django模板标记是否可以

作者:互联网

我正在实现Google Maps API,我希望在第一次渲染模板时(但前提是特定条件为真)打开第一个标记的InfoWindow.

我有这样的事情:

{% if project %}
//the following is automatically open the infowindow of the FIRST marker in the array when rendering the template
  var infowindow = new google.maps.InfoWindow({
    maxWidth:500
  });
  infowindow.setContent(markers[0].html);
  infowindow.open(map, markers[0]);
{% endif %}

这不会在Firefox或Internet Explorer 7中引发错误.它可以满足我的要求-但这只是SEEMS错误.我的文本编辑器大声疾呼,警告/错误.

这是不好的编码习惯吗?如果是这样,对替代方案有什么建议吗?

这是完整的代码,在脚本标签内,并删除了无关的位:

function initialize() {
  ...
  var map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);

  var markers = []
  setMarkers(map, projects, locations, markers);
  ...
}

function setMarkers(map, projects, locations, markers) {
  for (var i = 0; i < projects.length; i++) {
    var project = projects[i];
    var address = new google.maps.LatLng(locations[i][0],locations[i][1]);

    var marker = new google.maps.Marker({
            map: map, 
            position:address,
            title:project[0],
            html: description
        });

    markers[i] = marker;
    google.maps.event.addListener(marker, 'click', function() {
           infowindow.setContent(this.html);
              infowindow.open(map,this);
    });
  }

{% if project %}
//the following is automatically open the infowindow of the FIRST marker in the array when rendering the template
  var infowindow = new google.maps.InfoWindow({
    maxWidth:500
  });
  infowindow.setContent(markers[0].html);
  infowindow.open(map, markers[0]);
{% endif %}

 })
}

google.maps.event.addDomListener(window, 'load', initialize);

解决方法:

在一大堆Javascript中使用Django模板标记没有什么错. Django的模板语言在很大程度上与语言无关:它不在乎模板文本的含义.

我有大量的Javascript,其中包含大量的标签,条件,变量替换等.

对于这种情况,您的另一种选择是插入一个Java语言的布尔变量,并将条件放在Java语言中:

<script>
var is_project = {% if project %}true{% else %}false{% endif %};

//...

if (is_project) {
    // stuff for project
}
</script>

我想这可以使Javascript更干净.您必须根据自己的代码来决定要使用哪种样式.

标签:google-maps,django-templates,coding-style,javascript,django
来源: https://codeday.me/bug/20191023/1915333.html