Попытка получить доступ к данным модели из функции javascript после отрисовки страницы NodeJS EJS - PullRequest
1 голос
/ 18 июня 2020

Во-первых, это мое первое NodeJS приложение, так что простите меня, если это вопрос sh noobi. Я использую E js для создания пользовательского интерфейса и отправляю модель с данными, которые я отображаю в таблице.

Я пытаюсь получить доступ к данным этой модели с помощью функции javascript, чтобы сохранить себе еще один вызов базы данных, но я не могу понять это правильно.

<h1 class="in-line">Phone Log (<%= model.length %>)</h1>
<p id="pPhoneValue" class="in-line right-element">R -------</p>
<button class="btn btn-primary in-line right-element" onclick="valueSearch(model)">View</button>
<input class="in-line right-element" type="number"  id="iPhoneID" name="iPhoneID" placeholder="Enter Phone ID">
<div class="table-responsive-sm">
    <table class="table table-hover">
        <thead>
            <tr>
                <th>Phone ID</th>
                <th>Make</th>
                <th>Model</th>
            </tr>
        </thead>
        <tbody>
            <% for( const phone of model) { %>
                <tr>
                    <td><%= phone.ID %></td>
                    <td><%= phone.Make %></td>
                    <td><%= phone.Model %></td>
                </tr>
            <% } %>
        </tbody>
    </table>
</div>

Здесь - это функция javascript, но сейчас она просто отображает переданные данные для заинтересованных.

function valueSearch(Data){
    console.log(Data);
}

В настоящее время, когда я нажимаю sh кнопку, я получаю «Модель не определена».

Если вы укажете мне правильное направление, я буду очень признателен. Спасибо.

Вот код, который вызывает и отображает страницу из NodeJs

app.get("/view", (req, res) => {
    sql.connect(dbConfig, function (err){
        if (err) {
            console.log(err);
        }
        const request = new sql.Request();
        const getAllQuery = "SELECT * FROM Phone_Information ORDER BY PhoneID";
        request.query(getAllQuery, function(err, result){
            if (err) {
                console.error(err.message);
            }
            sql.close();
            res.render("viewLog", { model: result.recordset });
        });
    })
});

1 Ответ

0 голосов
/ 18 июня 2020

Привет, OP, было бы неплохо, если бы вы могли опубликовать nodejs, поскольку это может быть полезно. Я не знаю, как работает ваша программа, но с e js do:

valueSearch(<%=model%>)

Вам всегда нужен <%%>, если вы хотите использовать переменную, поскольку html не поймет, что переменная, о которой вы говорите

edit: Я пробовал, но это не сработало, возможно, это то, как e js взаимодействует с html, или мне что-то не хватает, но один из способов, которым вы действительно можете определить это, - :

let model = document.querySelectorAll('#model').innerText

e js файл:

<div id = "model" hidden><%= model %></div>
...