簡體   English   中英

Java變量內部的循環迭代(Django)

[英]For Loop Iteration Inside of Javascript Variable (Django)

我正在嘗試使用Django內部的選擇器來實現下拉菜單。 我在尋找一款看起來很棒的軟件方面取得了良好的進展!

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

但是,我在如何使其更具動態性方面陷入困境。

最終目標是要有一個過濾器選項,其中包含一個應用程序列表,我可以選擇和取消選擇這些應用程序,以更改輸出到屏幕的內容。

該軟件的工作方式是通過jQuery選擇器接收單個變量:

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

現在我只能對var使用硬編碼屬性

    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生成選項,則無需贅述。 像@AlexandreThebaldi答案這樣的簡單js for循環將起作用。

我會仔細檢查以確保您正確設置了Django標簽。 通過將選項集作為上下文傳遞,它看起來應該像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM