Локальная переменная тега скрипта не работает в тегах EJS - PullRequest
0 голосов
/ 22 сентября 2018
HTML:

<% for (let i = 0; i < monthlyTopSellers.imageUrlList.length; i++){ %>

<button id="test<%= i+1 %>">Buy Now</button>

<% } %>

<script>
    for (let i = 0; i < 10; i++){
        $('#test'+i.toString()).click(function () {
            let item = <%= items[i] %>
            // Then I just will use item variable
        }
    }
</script>

Это дает мне сообщение о том, что 'i' не определено, в этом коде 'let item = <% = items [i]%>'.Есть ли какое-либо решение или какой-то другой способ решить проблему.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Сначала вы должны передать массив i count из node.js в ejs как объект json.Затем вы получите эту переменную в ejs.И вы можете использовать это выражение foreach для своих ejs.

<% monthlyTopSellers.imageUrlList.forEach(function(imgurl, index){ %>
    <button id="test<%=index %>">Buy Now</button>
<% }); %>
0 голосов
/ 22 сентября 2018

Ejs не запускает цикл for (let i = 0; i < 10; i++) (клиент), он просто запускается с циклом внутри вашего <% %>

Вы можете создать itemsClient с items до for (let i = 0; i < 10; i++)

и используйте itemsClient внутри этого цикла.

<% for (let i = 0; i < monthlyTopSellers.imageUrlList.length; i++){ %>

<button id="test<%= i+1 %>">Buy Now</button>

<% } %>

<script>
let itemsClient = <%- JSON.stringify(items) %>;
for (let i = 0; i < 10; i++){
    $('#test'+i.toString()).click(function () {
        let item = itemsClient[i];
        // Use item (itemsClient[i])
    }
}
</script>

Вы можете проверить это.

...