Angular确实不准备与其他版本共存。但这是可行的。
首先加载角度库,并确保在加载之前
window.angular为空:
<script src="vendor/angular/1.2.0/angular.min.js"></script> <script src="app/app2.js"></script> <script> var angular2 = angular; window.angular = null; // here we're cleaning angular reference </script> <script src="vendor/angular/1.0.5/angular.js"></script> <script src="app/app1.js"></script> <script> var angular1 = angular; </script>
请注意,应在加载角度库后立即加载每个版本的angular的每个应用程序(
app1.js,
app2.js)。
应用程序的每个Javascript文件都应包含在自执行函数中
(function(angular) { ...})(angular)。看下面的例子app2.js:
(function(angular) {angular.module('myApp2', []).controller('App2Ctrl', function($scope) { $scope.$watchCollection('[a, b, c]', function() { console.log(angular.version.full); });});})(angular);请注意,我在这里使用
$watchCollection的仅适用于angular1.2.x。通过为每个文件提供匿名函数的作用域,您将迫使应用程序访问
angular属性而不是
window.angular属性。
最后,您必须使用手动方法来引导应用程序:
<body> <div id="myApp1" ng-controller="App1Ctrl"> </div> <div id="myApp2" ng-controller="App2Ctrl"> </div> <script> angular1.bootstrap(document.getElementById('myApp1'), ['myApp1']); angular2.bootstrap(document.getElementById('myApp2'), ['myApp2']); </script></body>这里工作的家伙。运行后,请检查控制台窗口以查看所用角度的记录版本。



