节点js + express + ejs。无法读取未定义的属性“ option0”

时间:2018-07-18 18:26:54

标签: javascript html node.js express ejs

app.js

var options = { option0: 11, option1: 'option1', option2: 'option2', option3: 'option3', option4: 'option4', option5: 'option5', option6: 'option6', option7: 'option7', option8: 'option8', option9: 'option9', option10: 'option10', }

res.render('main', {opt : options});

main.ejs

<select class="form-control" name="selected" required>

    <% for (let i = 1; i < opt.options.option0; i++) { %>
        <% optionName = 'option' + i %>
        <option value="<%= i %>"><%= opt.options[optionName] %></option>
    <% } %>

</select>

错误:无法读取未定义的属性'option0'。

1 个答案:

答案 0 :(得分:1)

您已将options作为属性opt的引用对象。所以opt现在将指向{ option0: 11, option1: 'option1', ...},并且渲染函数变为

res.render('main', {opt : { option0: 11, option1: 'option1', ...}});

因此,当您尝试访问opt.options.option0时,opt.options变得不确定,并引发错误

因此您应该使用 `

<% for (let i in opt) { %>
    <% optionName = 'option' + i %>
    <option value="<%= i %>"><%= opt[i] %></option>
<% } %>

`