2014-10-11 53 views
0

我在我的項目中使用RequireJS加載我的JS依賴項。RequireJS正確加載CodeMirror,但UIKit說它沒有定義

這是我的配置文件:

require.config({ 
    'baseUrl' : '/js', 
    'paths' : { 
     'angular' : 'dependencies/angular', 
     'cm' : 'dependencies/codemirror', 
     'marked' : 'dependencies/marked', 
     'jquery' : 'dependencies/jquery', 
     'sails' : 'dependencies/sails.io', 
     'uikit' : 'dependencies/uikit/js/uikit' 
    }, 
    'config' : { 
     'uikit' : { 
      'base' : 'dependencies/uikit/js' 
     } 
    }, 
    'shim' : { 
     'angular' : { 
      exports : 'angular' 
     }, 
     'cm/lib/codemirror' : { 
      exports : 'codemirror' 
     }, 
     'jquery' : { 
      exports : 'jquery' 
     }, 
     'sails.io' : { 
      deps : ['socket.io'], 
      exports : 'io' 
     }, 
     'uikit' : { 
      deps : ['jquery', 'cm/lib/codemirror'] 
     } 
    } 
}); 

define([ 
    'angular', 
    'uikit!htmleditor', 
    'cm/lib/codemirror', 
    'cm/addon/mode/overlay', 
    'cm/mode/markdown/markdown', 
    'cm/mode/xml/xml', 
    'cm/mode/gfm/gfm', 
    'marked' 
], function(angular, uikit, CodeMirror) { 

    var htmleditor = uikit.htmleditor(document.getElementById("formNewArticleTextarea"), { 
     markdown : true, 
     mode : 'tab' 
    }) 
}); 

的問題是,我每次重裝UIKit的HTML編輯插件返回我這個錯誤的頁面:

Uncaught ReferenceError: CodeMirror is not defined 

回答

0

我CodeMirror有同樣的問題和合並。

嘗試將CodeMirror故意放入init函數頂部的全局(窗口)作用域。請參閱下面的「添加此行」:

define([ 
    'angular', 
    'uikit!htmleditor', 
    'cm/lib/codemirror', 
    'cm/addon/mode/overlay', 
    'cm/mode/markdown/markdown', 
    'cm/mode/xml/xml', 
    'cm/mode/gfm/gfm', 
    'marked' 
], function(angular, uikit, CodeMirror) { 
    window.CodeMirror = CodeMirror; // <-- Add this line 
    var htmleditor = uikit.htmleditor(document.getElementById("formNewArticleTextarea"), { 
     markdown : true, 
     mode : 'tab' 
    }) 
});