<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@*" data-semver="1.6.6" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
<script src="//unpkg.com/@uirouter/angularjs/release/angular-ui-router.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/oclazyload/1.1.0/ocLazyLoad.js"></script>
<style>.active { color: red; font-weight: bold; }</style>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="app">
<a ui-sref="app.main" ui-sref-active="active">Open editor view</a>
<a ui-sref="about">Open about view</a>
<ui-view></ui-view>
</body>
</html>
var myApp = angular.module('app', ['ui.router', 'oc.lazyLoad'])
.config(['$ocLazyLoadProvider', function($ocLazyLoadProvider) {
$ocLazyLoadProvider.config({
debug: true,
modules: [{
name : 'codeMirror1',
files: [
"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.36.0/codemirror.min.css",
"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.36.0/codemirror.min.js"
]},{
name : 'codeMirror2',
files: [
"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.36.0/mode/xml/xml.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.36.0/mode/htmlmixed/htmlmixed.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.36.0/mode/css/css.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.36.0/mode/javascript/javascript.min.js",
"https://cdnjs.cloudflare.com/ajax/libs/angular-ui-codemirror/0.3.0/ui-codemirror.min.js"
]}]
});
}]);
myApp.directive('myeditor', function() {
return {
restrict: 'E',
link: function($scope, $element) {
var myCodeMirror = CodeMirror($element[0], {
value: "function myScript(){return 100;}\n",
mode: "javascript",
lineNumbers: true
});
}
};
});
myApp.config(function($stateProvider) {
var states = [
{
name: 'app',
abstract: true,
resolve: {
loadSiteCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
return $ocLazyLoad.load(['codeMirror1']).then(function() {
return $ocLazyLoad.load(['codeMirror2'])
});
}]
}
},
{
name: 'app.main',
url: '/main',
template: '<myeditor/>'
},
{
name: 'about',
url: '/about',
template: '<h3>This is the about view</h3>'
}
];
states.forEach(function(state) {
$stateProvider.state(state);
});
});
/* Styles go here */
.CodeMirror {
height: auto;
border: 1px solid #ddd;
}
.CodeMirror pre {
padding-left: 7px;
line-height: 1.25;
}