2014-10-11 104 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' 
    }) 
});