Javascript Нажмите Event Call Дважды Рули - PullRequest
0 голосов
/ 08 апреля 2020

Я пытался ввести какой-нибудь код javascript, чтобы вызвать какой-то ajax запрос на кнопку «Мне нравится», чтобы добавить что-то в мою базу данных

Есть 4-6 частей, подобных приведенному ниже блоку кода, но главное, правильно работают только те, которые размещены в первом {{каждом}} блоке файла .hbs, остальные, когда я нажимаю на элемент сердца, событие onclick вызывалось дважды

Мой главный .hbs

{{#if search.name}}
{{#if search.searchQuery}}
<hr>
<h2>Kết Quả Tìm Kiếm Cho "{{search.searchQuery}}":</h2>
<h3>Sản Phẩm: Tên</h3>
<hr>
{{#each search.name}}
<div class="card mb-3" style="max-width: 720px;border-style:none">
    <div class="row no-gutters">
        <div class="col-md-4">
            <a href="/product/{{PRODUCT_ID}}">
                <img src={{PRODUCT_IMG}} class="card-img" alt="..."
                    style="border-radius: 30px; width:239px; height:163px">
            </a>
        </div>
        <div class="col-md-7">
            <div style="padding-left: 7px;">
                <h5 class="card-title" style="margin-top: 7px;">{{PRODUCT_NAME}}</h5>
                <p class="card-text">Giá Hiện Tại:{{#if CURRENT_PRICE}} {{CURRENT_PRICE}} {{else}} Chưa có {{/if}}</p>
                <p class="card-text"> {{#if WINNER_ID}} Người ra giá: {{WINNER_ID}}{{/if}} </p>
                <p class="card-text">Ngày đăng: {{PRODUCT_TIME_PUSH}} </p>
                <p class="card-text"> Ngày kết thúc: {{PRODUCT_TIME_END}}</p>
            </div>
        </div>
        <div class="col-md-1 text-right">
            <a id="addFavor{{PRODUCT_ID}}">
                <i class="far fa-heart fa-2x" id="i{{PRODUCT_ID}}" value={{PRODUCT_ID}} name="like"
                    style="margin-right: 10px;margin-top: 10px;color:#dc143c;"></i>
            </a>
        </div>
        <script>
            function addLike(productId) {
                console.log("Like added")
                console.log(productId)
                $.ajax({
                    url: 'http://localhost:3000/product/like-add/' + productId,
                    type: 'GET',
                    dataType: 'json',
                    success: function () {
                        alert('Add to your watchlist!')
                    },
                    error: function () {
                        alert('Add to your watchlist unsuccessfully !')
                        window.location.href = "http://localhost:3000/account/login/default";
                    }
                })
                    .done(function (data) {
                        console.log(data)
                    })
            }
            function disLike(productId) {
                console.log("Like added")
                console.log(productId)
                $.ajax({
                    url: 'http://localhost:3000/product/like-remove/' + productId,
                    type: 'GET',
                    dataType: 'json',
                    success: function () {
                        alert('Removed ' + productId + ' from your watchlist!')
                    },
                    error: function () {
                        alert('Removed ' + productId + ' from your watchlist unsuccessfully!')
                    }
                })
                    .done(function (data) {
                        console.log(data)
                    })
            }
            $(document).ready(function () {
                $("#addFavor{{PRODUCT_ID}}").click(function () {
                    var heartClass = $('#i{{PRODUCT_ID}}').attr('class');

                    if (heartClass == 'far fa-heart fa-2x') {
                        $('#addFavor{{PRODUCT_ID}}').empty();
                        $('#addFavor{{PRODUCT_ID}}').append(`
                                <i class="fas fa-heart fa-2x" id="i{{PRODUCT_ID}}" value={{PRODUCT_ID}} name="like" style="margin-right: 10px;margin-top: 10px;color:#dc143c;"></i>
                            `);
                        console.log(heartClass);
                        addLike({{ PRODUCT_ID }});
            }
                    else {
                    $('#addFavor{{PRODUCT_ID}}').empty();
                    $('#addFavor{{PRODUCT_ID}}').append(`
                                <i class="far fa-heart fa-2x" id="i{{PRODUCT_ID}}" value={{PRODUCT_ID}} name="like" style="margin-right: 10px;margin-top: 10px;color:#dc143c;"></i>
                            `);
                    console.log(heartClass);
                    disLike({{ PRODUCT_ID }});
                    }
                });
            });
        </script>
    </div>
</div>
{{else}}
<div class="card mb-3" style="max-width: 720px;border-style:none">
    <div class="row no-gutters">
        <div class="col-md-7">
            <div style="padding-left: 7px;">
                <h5 class="card-title" style="margin-top: 7px;">Không tìm thấy kết quả nào.</h5>
            </div>
        </div>
    </div>
</div>
{{/each}}
{{/if}}
{{/if}}

Я слышал об использовании предварительной компиляции панелей управления для вставки кода в частичные шаблоны, но я не знаю, как внедрить их в мой код. Кто-нибудь может мне с этим помочь. Очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...