Не удается заставить работать редактор асов с шаблоном горячего полотенца ASP.NET

Я новичок в веб-разработке, поэтому, пожалуйста, пощадите:) Я создал новый проект ASP.NET с шаблоном горячего полотенца ( http://nuget.org/packages/HotTowel/) и добавил

<script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>

к index.cshtml. Также я изменил home.html так:

<section>
    <div id="editor">
        function foo(items) {
            var x = "All this is syntax highlighted";
            return x;
        }
    </div>
</section>

Наконец, я изменил home.js:

define(['services/logger'], function (logger) {
    var vm = {
        activate: activate,
        title: 'Home View'
    };

    var editor = ace.edit("editor");
    editor.setTheme("ace/theme/monokai");
    editor.getSession().setMode("ace/mode/javascript");

    return vm;

    //#region Internal Methods
    function activate() {
        logger.log('Home View Activated', null, 'home', true);
        return true;
    }
    //#endregion
});

Когда я запускаю приложение, Chrome сообщает, что в ace.js есть Uncaught TypeError: Невозможно прочитать свойство 'env', равное null. Конечно, домашний экран не будет отображаться. Что я должен сделать, чтобы это работало?

2 ответа

Решение

Похоже var editor = ace.edit("editor"); линия проходит до <div id="editor"> убедитесь, что скрипт home.js включен после <div id="editor"> или активируется после события document.onload

@ Папа Маффлон Мне запрещено комментировать, поэтому я поставлю это как ответ. HotTowel использует Durandal, который будет вызывать activate функция, когда страница становится активной (активация выставляется виртуальной машиной).

Вы можете использовать активировать как "событие загрузки страницы". Просто меняя return true; Заявление в функции активации для return yourDefinedStartupMethod(); должно сработать. Вы можете взглянуть на boot() использование функции в shell.js

Более подробное описание поведения можно найти здесь http://oscarmeszar.com/hottowel-with-breeze-example/.

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