通过在 DOJO 中迭代 JSONArray 来创建动态复选框

Create Dynamic checkboxes by iterating JSONArray in DOJO

本文关键字:创建 动态 复选框 JSONArray 迭代 DOJO      更新时间:2023-09-26

我是DOJO的新手,我正在使用DOJO 1.5.0版本

我想通过在 DOJO 中迭代 JSONArray 来创建动态复选框。此动态创建将在特定事件上完成,例如当我们选择某个组合框值时。

例如,考虑下面的JSONArray:

var tempJSONArray = [{role_id = '1', role_name = 'role1'},{role_id = '2', role_name = 'role2'},{role_id = '3', role_name = 'role3'}]

我希望显示与角色名称对应的复选框。将role_name标记复选框,并从 JSON 对象role_id值。我还想在复选框中添加"onChange"事件,因为在这个事件上,我想使用 role_ids 对服务器进行 Ajax 调用。

感谢您的阅读,如果需要进一步澄清,也请告诉我。

您可以使用

dojo.create() 方法创建 DOM 节点,并使用 dojo.place() 方法将它们放置在另一个元素中,例如:

var checkbox = dojo.create("input", {
    type: "checkbox",
    value: "1"
});

您可能必须将其包装在<label>中以显示文本(您也可以使用 dojo.create() 创建文本)。然后,您可以将它们放在列表中,例如:

dojo.place(label, "checkboxes");

这会将复选框(或标签)包装在 ID 为 checkboxes 的元素中。因此,如果您现在在循环中创建复选框,它应该可以工作。

在进行一些互联网冲浪和玩代码后,我可以编写下面的代码,这对我的场景来说效果很好。所以认为这对其他人有帮助。

for ( var i = 0; i < roleJSON.length; i++) {
                        var role = roleJSON[i]; 
                        var tr = dojo.create("tr",{id:"rolebasecheckbox"+i,'class':'rolebasecheckbox'});
                        alert("tr=" + tr);
                        var td= dojo.create("td",{innerHTML:'<input id="roleBaseCb_'+i+'" value="'+role.role_id+'" dojoType="dijit.form.CheckBox" onclick="alert('onclick event')" type="checkbox" /> <label for="roleBaseCb_'+i+'">'+role.role_name+'</label>',align:'center'},tr);
                        alert("td=" + td);
                        if(i==0){
                        alert("i is 0");
                        dojo.place(tr, "roleBaseComboTR", "after");
                        }else{
                            dojo.place(tr, "rolebasecheckbox"+(i-1), "after");  
                        }
                    }