【问题标题】:For Loop Iteration Inside of Javascript Variable (Django)Javascript变量内部的For循环迭代(Django)
【发布时间】:2016-06-27 16:03:41
【问题描述】:

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

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

但是,我陷入了如何使它更具活力的问题上。

最终目标是有一个过滤器选项,其中包含一个应用程序列表,我可以选择和取消选择这些应用程序,以更改输出到屏幕的内容。

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

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

现在我只能对变量使用硬编码属性

    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 循环来为变量创建属性?

【问题讨论】:

    标签: javascript python html django twitter-bootstrap


    【解决方案1】:

    你试过了吗:

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

    【讨论】:

    • 嘿!谢谢!那行得通!现在我只是想弄清楚如何从我的 django 数据库中提取数据以使其更具动态性...... :)
    【解决方案2】:

    如果你在 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 就可以了。像@AlexandreThebaldi 回答这样的简单 js for 循环就可以了。

    【讨论】:

      【解决方案3】:

      我会仔细检查以确保您正确设置了 Django 标记。通过将选项集作为上下文传递,它应该看起来像这样:

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

      【讨论】:

      • 谢谢!这也有帮助,问题是我引用了错误的上下文!我的上下文是对象......这是有效的代码!变量数据=[]; {%for obj in objects %} {% for element in obj.display_application %} data[data.length]={id: {{ forloop.counter }}, label: "{{ element }}", isChecked: true} {% endfor %} {% endfor %}
      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多