我正在尝试使用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循环来为变量创建属性?
答案 0 :(得分:0)
你试过了吗?
var data = [];
for (var i = 0; i <= 10; i++) {
data[data.length] = { id: (i + 1), label: 'Option ' + (i + 1), isChecked: true };
}
答案 1 :(得分:0)
如果你在Django中生成列表,你可以这样做:
mark_safe(json.dumps([{'id': element.id, 'label': element.label, 'isChecked': element.is_checked} for element in mylist]))
。这只是一个例子,因为我不知道你要渲染哪些对象。假设这样安全且转储的json被发送到foo
上下文变量:
var data = {{ foo }};
如果你想在纯粹的javascript中生成选项,那就什么都不是djangoish。像@AlexandreThebaldi这样的简单js for循环可以解决。
答案 2 :(得分:0)
我会仔细检查以确保您正确设置了Django标记。通过将选项集作为上下文传递它应该看起来像这样:
{% for opt in options %}
{id: {{ forloop.counter }}, label: {{ opt }}, isChecked: true}
{% endfor %}