Почему Джинт или Юрский не видят мой шаблон Handlebars?

Моя программа:

using Jurassic;
using System;

namespace JintScience
{
    class Program
    {
        static void Main(string[] args)
        {
            ScriptEngine engine = new ScriptEngine();
            engine.ExecuteFile("handlebars.runtime.min.js");
            engine.ExecuteFile("compiledtemplates.js");
            Console.WriteLine(engine.CallGlobalFunction<string>("Handlebars.templates.MyTemplate"));
            Console.ReadKey();
        }
    }
}

Моя ошибка: "Handlebars.templates.MyTemplate" не является функцией.

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

Ошибка, по сути, одна и та же, использую ли я юрский или Jint. Синтаксис тоже, так что я буду рад принять решение, которое использует либо.

Версия веб-страницы вышеуказанной программы работает просто отлично. У меня нет проблем с получением ожидаемого результата при вызове Handlebars.templates.MyTemplate() из консоли javascript моего браузера.

Я создал compiledtemplates.js, используя прекомпилятор handlebars. Я использую handlebars.runtime.min.js из этого источника.

Я ожидаю, что изо всех сил, потому что я не совсем понимаю, как юрский или Jint должны работать с javascripts, как мой.

Изменить: я думаю, это потому, что я использую CallGlobalFunction

Я получил это с помощью Evaluate вместо CallGlobalFunction. Кажется, CallGlobalFunction предназначен только для функций, которые находятся в глобальной области видимости. Но Handlebars.templates.MyTemplate не живет в глобальной области видимости. Я полагаю, что для запуска Handlebars внутри Jurassic я буду использовать только Evaluate. Короче, мне нужно было изменить одну строку:

Console.WriteLine(engine.Evaluate<string>("Handlebars.templates.MyTemplate"));

0 ответов

Другие вопросы по тегам