2012-09-10 38 views
-2

我一直在努力得到這個現在相當長的一段工作:Jinja2使用Javascript嗎?

{% for record in records %} 

var GPSlocation = "(37.7699298, -93.4469157)"; 
var LatLng = GPSlocation.replace("(", "").replace(")", "").split(", ") 
var Lat = parseFloat(LatLng[0]); 
var Lng = parseFloat(LatLng[1]); 

var markerLatlng = new google.maps.LatLng(Lat, Lng); 

var marker = new google.maps.Marker({ 
    position: record.GPSlocation, 
    title: record.title 
}); 

//add the marker to the map 
marker.setMap(map); 

{% endfor %} 

和正常工作時,我硬編碼在那裏的變數,但是,否則我是不會做任何事情。當我在html中打印出來時,我擁有記錄變量中的所有數據,但是當我嘗試在JavaScript中使用它時,它不起作用。有任何想法嗎?

所以我需要把一個JSON編碼過濾器到Jinja2的系統,我猜測它會是這個樣子:

jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), 
          jinja_env.filters['json_encode'] = json.dumps, 
          autoescape = True) 
+2

你不使用'記錄'的例子。目前還不清楚你的問題是什麼,或者你正在努力完成什麼。另請注意,JavaScript不會與模板標記交互。 – Marcin

+0

@Marcin哎呀抱歉,我剛剛複製了我的硬編碼版本,但我只是修復它。我試圖訪問記錄的屬性來設置標記值 – clifgray

+0

如果Javascript不會與jinja2標記語言交互,那麼您會如何建議在那裏獲取該信息? – clifgray

回答

3

是的,但不是這樣的。你可以做這樣的事情:

{% for record in records %} 
addRecord({ 
    title: {{ title|json_encode }}, // assuming you have json_encode set up as a filter 
    position: { 
     latitude: {{ record.position.latitude|json_encode }}, 
     longitude: {{ record.position.longitude|json_encode }} 
    } 
}); 
{% endfor %} 
+0

我該如何設置json_encode作爲過濾器?我在google上找不到東西 – clifgray

+0

在創建Jinja2環境(這裏命名爲'jinja_env')後,輸入'json'模塊:'jinja_env.filters ['json_encode'] = json.dumps' – icktoofay

+0

我將代碼更改添加到代碼中。你打算說什麼?它告訴我,我有一個括號錯誤,但我嘗試了一些沒有成功的變化 – clifgray