Как вызвать функции javascript внешних файлов из шаблона ejs? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть этот файл для добавления нового корабля и сценарий для заполнения выпадающего меню de fleet отлично работает:

файл new.ejs:

<% include ../partials/header %>

<div class="container">
    <div class="row">
        <h1 style="text-align: center;">Create a new Ship</h1>
        <div style="width: 30%; margin: 25px auto;">
            <form action="/ships" method="POST">
                <div class="form-group">
                    <input class="form-control" type="text" name="name" placeholder="name">
                </div>
                <div class="form-group">
                    <input class="form-control" type="number" name="tons" placeholder="tons" min="0" step="1">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="image" placeholder="img url">
                </div>
                <!--<div class="form-group">-->
                <!--    <input class="form-control" type="text" name="fleet" placeholder="fleet">-->
                <!--</div>-->

                <div class="form-group">
                    <select class="form-control" type="text" name="fleet" id="selectNumber" placeholder="fleet">
                        <option>Choose a fleet</option>
                    </select>
                </div>

                <script>
                    var select = document.getElementById("selectNumber");
                    var options = ["First fleet", "Second fleet", "Metropolitan fleet", "Support fleet"];
                    for(var i = 0; i < options.length; i++) {
                        var opt = options[i];
                        var el = document.createElement("option");
                        el.textContent = opt;
                        el.value = opt;
                        select.appendChild(el);
                    }
                </script>




                <div class="form-group">
                    <input class="form-control" type="text" name="description" placeholder="description">
                </div>
                <div class="form-group">
                    <button class="btn btn-lg btn-primary btn-block">Submit!</button>
                </div>
            </form>
            <a href="/ships/">Back</a>
        </div>
    </div>

</div>


<% include ../partials/footer %>

Я хочу отделить «логику» от представления, поэтому мне нужно создать файл: .. / public / js / jsscripts.js

, и я предполагаю, что внутри jsscripts.js

module.exports = {
  PopulateFleet: function () {
var select = document.getElementById("selectNumber");
                    var options = ["First fleet", "Second fleet", "Metropolitan fleet", "Support fleet"];
                    for(var i = 0; i < options.length; i++) {
                        var opt = options[i];
                        var el = document.createElement("option");
                        el.textContent = opt;
                        el.value = opt;
                        select.appendChild(el);
                    }

};

1) Нужно ли мне запрашивать файл "jsscripts" из моего app.js? Что-то вроде:

jscripts= require ("./public/js/jscripts");

2)Как вызвать функцию «PopulateFleet» из файла new.ejs? что-то вроде ??

<% PopulateFleet %>

или

<% jscripts.PopulateFleet %>

Структура папки

Fleet - public - js -> jsscripts.js

Fleet - просмотры - корабли -> - new.ejs

1 Ответ

0 голосов
/ 05 февраля 2019

use <%= jscripts.PopulateFleet() %>

...