用于Javascript变量(Django)内部的循环迭代

For Loop Iteration Inside of Javascript Variable (Django)

本文关键字:内部 循环 迭代 Django Javascript 变量 用于      更新时间:2023-09-26

我正试图在django中实现一个带有选择器的下拉菜单。我在找到一个看起来很棒的软件方面取得了很好的进展!

http://nelrohd.github.io/bootstrap-dropdown-checkbox/

然而,我一直纠结于如何让它更有活力。

最终目标是有一个过滤器选项,它由一个应用程序列表组成,我可以选择和取消选择,以更改输出到屏幕的内容。

该软件的工作方式是通过jQuery选择器接收单个变量:

    var myData = [{id: 1, label: "Test" }];
    $(".myDropdownCheckbox").dropdownCheckbox({
      data: myData,
      title: "Dropdown Checkbox"
    });

现在我只能使用vars 的硬编码属性

    var data =[ 
        { id: "1", label: "Option 1", isChecked: true },
        { id: "2", label: "Option 2", isChecked: true },
        { id: "3", label: "Option 3", isChecked: true},
        { id: "4", label: "Option 4", isChecked: true },
        { id: "5", label: "Option 5", isChecked: true },
        { id: "6", label: "Option 6", isChecked: true},
        { id: "7", label: "Option 7", isChecked: true },
        { id: "8", label: "Option 8", isChecked: true },
        { id: "9", label: "Option 9", isChecked: true },
        { id: "10", label: "Option 10", isChecked: true },
    ];

我想找到一种方法,使这些属性可迭代,并能够从django数据库中提取列表:(类似于:(

    var data=[
        for( var i = 0; i<=10, i++)
        {id: (i), label: (list(i)), isChecked: true},
    ]

我试过使用django模板标签,但似乎也无法实现。我的问题是:是否可以在for循环上迭代以创建变量的属性?

您尝试过吗:

var data = [];
for (var i = 0; i <= 10; i++) {
  data[data.length] = { id: (i + 1), label: 'Option ' + (i + 1), isChecked: true };
}

如果您在Django中生成列表,您可以执行以下操作:

  1. 我假设您有一个要在Javascript中序列化的任意对象的列表。当您准备好将其传递到响应上下文时,请使用以下内容进行转换:mark_safe(json.dumps([{'id': element.id, 'label': element.label, 'isChecked': element.is_checked} for element in mylist]))。这只是一个例子,因为我不知道要渲染哪些对象
  2. 假设这样的安全且转储的json被发送到foo上下文变量:

    var data = {{ foo }};
    

如果你想用纯javascript生成选项,上面没有djangoish。像@AlexandreHebaldi这样的简单js-for循环就可以了。

我会仔细检查以确保Django标记设置正确。通过将一组选项作为上下文传递,它应该是这样的:

{% for opt in options %}
     {id: {{ forloop.counter }}, label: {{ opt }}, isChecked: true}
{% endfor %}