如何在神社循环中使用 javascript 变量
How to use a javascript var in a jinja loop
在我的 HTML 文件的 javascript 部分,我需要使用 jinja 循环遍历来自 flask 的 JSON。
但是,当索引达到已经存在的 javascript var 的值时,我需要打破循环。
var username_selected = $('#username').find(":selected").text();
{% for user in users if user.username == username_selected -%}
var key = {{ user.keynumber }};
$('#originalkey').val(key);
{% endfor %}
不幸的是,这不起作用,我认为它是因为 jinja 认为 username_selected
是 jinja 的一部分,但它不是。
我尝试用 JS var 值创建一个 jinja 变量,但没有用。
{% set username = namespace(username=username_selected) %}
是否有任何解决方法或实际上不可能?
这是不可能的。 Python代码在服务器端运行,js在浏览器端运行。
我通过删除 jinja 循环中的 if 条件并将其替换为 javascript if 条件并在满足条件时从函数返回来修复它。
function update_userkey(){
var username_selected = $('#username').find(":selected").text();
{% for user in users -%}
if( "{{user.username}}" == username_selected){
var key = {{ user.keynumber }};
$('#originalkey').val(key);
return;
}
{% endfor %}
}
@Chris G in Pastebin 给出的代码。还要确保代码的可用性以供将来使用。
const users = {{ users | tojson | safe }}
$('#username').on('input', function () {
const username_selected = $('#username').val();
const user = users.find(user => user.username === username_selected);
if (user) $('#originalkey').val(user.keynumber);
});
在我的 HTML 文件的 javascript 部分,我需要使用 jinja 循环遍历来自 flask 的 JSON。 但是,当索引达到已经存在的 javascript var 的值时,我需要打破循环。
var username_selected = $('#username').find(":selected").text();
{% for user in users if user.username == username_selected -%}
var key = {{ user.keynumber }};
$('#originalkey').val(key);
{% endfor %}
不幸的是,这不起作用,我认为它是因为 jinja 认为 username_selected
是 jinja 的一部分,但它不是。
我尝试用 JS var 值创建一个 jinja 变量,但没有用。
{% set username = namespace(username=username_selected) %}
是否有任何解决方法或实际上不可能?
这是不可能的。 Python代码在服务器端运行,js在浏览器端运行。
我通过删除 jinja 循环中的 if 条件并将其替换为 javascript if 条件并在满足条件时从函数返回来修复它。
function update_userkey(){
var username_selected = $('#username').find(":selected").text();
{% for user in users -%}
if( "{{user.username}}" == username_selected){
var key = {{ user.keynumber }};
$('#originalkey').val(key);
return;
}
{% endfor %}
}
@Chris G in Pastebin 给出的代码。还要确保代码的可用性以供将来使用。
const users = {{ users | tojson | safe }}
$('#username').on('input', function () {
const username_selected = $('#username').val();
const user = users.find(user => user.username === username_selected);
if (user) $('#originalkey').val(user.keynumber);
});