0

我是 web 开发的新手,所以请怜悯 :) 我已经使用热毛巾模板 ( http://nuget.org/packages/HotTowel/ ) 创建了一个新的 ASP.NET 项目并添加了

<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: Cannot read property 'env' of null。当然,主屏幕不会出现。我应该怎么做才能让它工作?

4

2 回答 2

1

看起来像在创建var editor = ace.edit("editor");之前运行的行<div id="editor">,请确保 home.js 脚本包含在之后<div id="editor">或在 document.onload 事件之后被激活

于 2013-02-23T20:25:45.223 回答
0

@Papa Mufflon 我不允许发表评论,所以我会把它作为答案。HotTowel 使用了 Durandal,它会activate在页面变为活动状态时调用该函数(activate 由 vm 公开)。

您可以将激活用作“页面加载事件”。只需将return true;activate 函数中的语句更改为 a 即可return yourDefinedStartupMethod();。你可以看看boot()shell.js中的函数用法

这里有更详细的行为描述http://oscarmeszar.com/hottowel-with-breeze-example/

于 2013-04-25T08:51:16.820 回答