最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

python - Jinja2 for loop in javascript on a list not working but accessing individual elements works - Stack Overflow

programmeradmin0浏览0评论

I am working on a flask + jinja2 website which involves plotting some stored markers on a map.

Python code

resultroute['checkpointlist'] = CheckPoint.query.filter_by(route_id=route.code)
return render_template('routes/edit.html',route=resultroute)

Javascript in edit.html

    function addExistingMarkers() {
        //Individual access to elements
        var name0 = '{{route.checkpointlist[0].name}}';
        var lat0 = {{route.checkpointlist[0].latitude}};
        var long0 = {{route.checkpointlist[0].longitude}};
        var marker = new google.maps.Marker({
          position: new google.maps.LatLng({{ route.checkpointlist[0].latitude }}, {{ route.checkpointlist[0].longitude }}),
          map: map,
          title: '{{ route.checkpointlist[0].name }}'
        });

        //Trying to iterate over the list
        {% for checkpoint in route.checkpointlist %}
            var lat = checkpoint.latitude;
            var long = checkpoint.longitude;
            var cpname = checkpoint.name;
            var location = new google.maps.LatLng(lat, long);

            var marker = new google.maps.Marker({
                  map: map,
                  draggable:true,
                  title:cpname,
                  animation: google.maps.Animation.DROP,
                  position: location,
            });
         {% end for %}
    }

Only one marker is getting placed which is from the individual access of [0] element. But somehow the for loop is not working.

I am working on a flask + jinja2 website which involves plotting some stored markers on a map.

Python code

resultroute['checkpointlist'] = CheckPoint.query.filter_by(route_id=route.code)
return render_template('routes/edit.html',route=resultroute)

Javascript in edit.html

    function addExistingMarkers() {
        //Individual access to elements
        var name0 = '{{route.checkpointlist[0].name}}';
        var lat0 = {{route.checkpointlist[0].latitude}};
        var long0 = {{route.checkpointlist[0].longitude}};
        var marker = new google.maps.Marker({
          position: new google.maps.LatLng({{ route.checkpointlist[0].latitude }}, {{ route.checkpointlist[0].longitude }}),
          map: map,
          title: '{{ route.checkpointlist[0].name }}'
        });

        //Trying to iterate over the list
        {% for checkpoint in route.checkpointlist %}
            var lat = checkpoint.latitude;
            var long = checkpoint.longitude;
            var cpname = checkpoint.name;
            var location = new google.maps.LatLng(lat, long);

            var marker = new google.maps.Marker({
                  map: map,
                  draggable:true,
                  title:cpname,
                  animation: google.maps.Animation.DROP,
                  position: location,
            });
         {% end for %}
    }

Only one marker is getting placed which is from the individual access of [0] element. But somehow the for loop is not working.

Share Improve this question edited Jun 20, 2015 at 5:14 prasunnair asked Jun 20, 2015 at 5:06 prasunnairprasunnair 923 silver badges12 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3
{% for checkpoint in route.checkpointlist %}
  var lat = {{checkpoint.latitude}};
  var long = {{checkpoint.longitude}};
  var cpname = {{checkpoint.name}};
  var location = new google.maps.LatLng(lat, long);

  var marker = new google.maps.Marker({
    map: map,
    draggable: true,
    title: cpname,
    animation: google.maps.Animation.DROP,
    position: location,
  });
 {% end for %}

You need to include the double braces when referencing variable in a Jinja template.

Your tips helped me to build my JS function,
but I would like to make an adjustment,
you need to use {% endfor %} instead of {% end for %}.

发布评论

评论列表(0)

  1. 暂无评论