Выполнение JavaScript, загруженного в тег <script>непосредственно на исходной странице - PullRequest
0 голосов
/ 29 января 2019

Мне нужно динамически получить файл JavaScript, который содержит только вспомогательные функции руля.Это будет извлечено в html-файл, который будет включать в себя шаблон.

Динамический файл ( handlebar_helper_load.js ):

import handlebars from 'handlebars';

handlebars.registerHelper('**fullName**', function(person) {
            return person.firstName + " " + person.lastName;
})

Файл представления основы:

import handlebars from 'handlebars';

export default View.extend({
    template: template,

    onRender() {
        var imported = document.createElement('script');

        // This will load the above file in script tag on this page 
        imported.src = '**handlebar_helper_load.js**';
        document.head.appendChild(imported);

        // This is the handlebars template
        var source   = '<div class="post">\n' +
                        '  <h1>By {{fullName author}}</h1>\n' +
                        '  <div class="body">{{body}}</div>\n' +
                        '\n' +
                        '  <h1>Comments</h1>\n' +
                        '\n' +
                        '  {{#each comments}}\n' +
                        '  <h2>By {{fullName author}}</h2>\n' +
                        '  <div class="body">{{body}}</div>\n' +
                        '  {{/each}}\n' +
                        '</div>\n';

        var template = handlebars.compile(source);
        var context  = {
            author: {firstName: "Alan", lastName: "Johnson"},
            body: "I Love Handlebars",
            comments: [{
                author: {firstName: "Yehuda", lastName: "Katz"},
                body: "Me too!"
            }]
        };

        var html    = template(context);
        $.('handlebarDiv').append(html);

    },
 }

Проблема, с которой я столкнулся, заключается в том, что я получаю сообщение об ошибке, что функция **fullName** не определена, что означает, что регистрация помощника с помощью тега script не работает.
Есть ли способ, которым это может бытьсделано?

1 Ответ

0 голосов
/ 30 января 2019

Вам, вероятно, нужно

imported.src = 'handlebar_helper_load.js';

с правильным путем (относительный / полный)

вместо

imported.src = '**handlebar_helper_load.js**';

, поскольку при добавлении тега сценария браузер запрашивает файл, и файл должен существовать по правильному пути.Проверьте вкладку сети в devtools и посмотрите, успешно ли выполнен запрос

...