2013-02-23 58 views
0

我新的Web開發,所以請憐憫:) 我創建與熱毛巾模板創建一個新的ASP.NET項目( 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> 

to 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 
}); 

當我運行應用程序,瀏覽器告訴我,ace.js有Uncaught TypeError:無法讀取null的屬性'env'。當然,主屏幕不會顯示出來。我應該怎麼做才能使它工作?

回答

1

看起來像var editor = ace.edit("editor");線下運行時創建<div id="editor">之前,使包括確保home.js腳本<div id="editor">後或document.onload事件

+0

謝謝你,它工作時,我在其中添加一個onClick事件監聽器div和調用VAR編輯= ...代碼。但這並不理想。在熱毛巾Web應用程序中調用某個節的初始化代碼應該如何? – 2013-02-24 09:17:02

+0

我不知道熱毛巾的任何細節,但在一個正常的HTML頁面,我想無論是移動所有腳本文件結束,或者添加一個檢查'如果(!的document.getElementById(「編輯」))文件.addEventListener(「load」,initEditor,true)else initEditor()' – 2013-02-24 19:30:44

0

@Papa Mufflon被激活後我不能發表評論,所以我會把它作爲答案。 HotTowel使用Durandal,當頁面變爲活動狀態時(激活由vm公開),將調用activate函數。

您可以使用激活爲您的「在頁面加載事件」。 只需將激活功能中的return true;聲明更改爲return yourDefinedStartupMethod();即可使用。您可以看一下shell.js中的boot()函數用法

這裏有一個更詳細的行爲描述http://oscarmeszar.com/hottowel-with-breeze-example/