Wenn Sie jQuery und Unterstrichen in Ihren HTML enthalten, werden sie global verfügbar sein. Es besteht keine Notwendigkeit, sie "zu injizieren".
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="//documentcloud.github.io/underscore/underscore-min.js"></script>
Wenn Sie sie in einem Modul einschließen wollten, könnten Sie so etwas tun:
angular.module('myApp', []).
service('vendorService', ['$q', '$timeout', '$window', function($q, $timeout, $window){
var deferred = $q.defer(), libs = {};
$script([
'//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js',
'//documentcloud.github.io/underscore/underscore-min.js'
], 'vendorBundle');
$script.ready('vendorBundle', function() {
libs.$ = $window.jQuery.noConflict();
libs._ = $window._.noConflict();
$timeout(function(){
deferred.resolve(libs);
}, 0);
});
this.getLibs = function(){
return deferred.promise;
}
}]).
controller('myController', ['$scope', 'vendorService', function($scope, vendorService){
vendorService.getLibs().then(function(libs){
$scope.jQueryVersion = libs.$.fn.jquery;
$scope._ = libs._;
});
}]);
Dadurch Sie die Bibliotheken asynchron geladen werden, damit während sie von Konflikt mit zuvor geladenen Versionen halten . Es kann einen besseren Weg geben, Verweise auf die geladenen Bibliotheken zu speichern, aber das sollte gut funktionieren.
Auch dieses Beispiel basiert auf einem Drittanbieter ($script.js).
Und hier ist ein jsFiddle (http://jsfiddle.net/moderndegree/bzXGx/);
Ich mag diese Lösung – Mirko
schön und sauber. Ich würde das als Antwort akzeptieren – Hinrich