如何根据EJS在数据库中设置的位置动态渲染输入字段

时间:2016-10-05 10:05:55

标签: javascript node.js ejs

我有一个存储在数据库中的输入字段类型,其位置由用户设置。例如,FirstName,textbox 1,lastname文本框2.此位置可以更改。我想渲染一个视图,显示它们在数据库中的位置的输入元素。这是我从数据库`formular获得的数据库:

   [ { FormularID: 187,                                                                                                                                                                                                
       CampaignID: 13,                                                                                                                                                                                                 
       FormLabel: 'Title',                                                                                                                                                                                             
       InputType: 'textbox',                                                                                                                                                                                           
       InputDetails: '',                                                                                                                                                                                               
       InputPosition: 1 },  
     FormularID: 188,                                                                                                                                                                                                
       CampaignID: 13,                                                                                                                                                                                                 
       FormLabel: 'DATE OF BIRTH',                                                                                                                                                                                             
       InputType: 'DATE',                                                                                                                                                                                           
       InputDetails: '',                                                                                                                                                                                               
       InputPosition: 2 },                                                                                                                                                                                             
     { FormularID: 189,                                                                                                                                                                                                
       CampaignID: 13,                                                                                                                                                                                                 
       FormLabel: 'First Name',                                                                                                                                                                                        
       InputType: 'textbox',                                                                                                                                                                                           
       InputDetails: '',                                                                                                                                                                                               
       InputPosition: 0 } ] }    `
Now in my view i have tried this but it doesn't arrange based on the position set.

    <% for(var i in templateData.formular){ %>
    <% if(templateData.formular[i].InputPosition==i){ %>
        <% if(templateData.formular[i].InputType=='textbox'){ %>

            <div class="form-group">
            <label for="inputEmail3"><%=templateData.formular[i].FormLabel + i %></label>
            <input type="text" class="form-control" id="inputEmail3">
            </div>
        <% } %>
<% if(templateData.formular[i].InputType=='date'){ %>
            <div class="form-group">
            <label for="inputEmail3" class="col-sm-1 col-form-label"><%=templateData.formular[i].FormLabel%></label>
            <input type="date" class="form-control" id="inputEmail3">
            </div>
        <% } %>
    <% } %>

因此,如果用户决定将firstname设置为2并将tile设置为1并将dateofbirth设置为0.我希望视图按该顺序呈现字段。

1 个答案:

答案 0 :(得分:0)

我通过修改上面的结构来修复我的问题

<% for(var i=0; i< templateData.formular.length; i++){ %>
        <div class="form-group">
        <label for="inputEmail3"><%=templateData.formular[i].FormLabel %></label>
        <input type="<%=templateData.formular[i].InputType %>"class="form-control" id="inputEmail3">
        </div>
<% } %>

然后在后端,当我从数据库中读取时,通过我的数据库命令输入InputPosition,并按升序排序数据。 因此,当用户决定定位元素时,它们按照1-2-3 --- n的顺序排列并呈现该顺序。