向angular js组件注入jquery和下划线
inject jquery and underscore to angular js component
我在我的新服务中使用angularjs、下划线和jQuery
myModule.factory('MyService', ['MyResource', function (MyResource) {
....
// Here I make use of _ and $
}]);
如何将下划线或jQuery注入到新服务中,以便确保_是下划线,$是jQuery?
我正在寻找类似的东西:
myModule.factory('MyService', [ 'underscore', 'jquery','MyResource', function (_, $, MyResource) {
....
// Here I want to use $ and _ and be SURE that _ is underscore and $ is jquery
}]);
基于@moderndegree的方法,我已经实现了以下代码,我不能说它是完美的,但通过这种方式,测试人员会知道它是否具有jQuery依赖性,因为$window
是太通用的对象,无法注入。
'use strict';
(function () {
var app= angular.module('app');
//these are just references the instance of related lib so we can inject them to the controllers/services in an angular way.
app.factory('jQuery', [
'$window',
function ($window) {
return $window.jQuery;
}
]);
app.factory('Modernizr', [
'$window',
function ($window) {
return $window.Modernizr;
}
]);
app.factory('Highcharts', [
'$window',
function ($window) {
return $window.Highcharts;
}
]);
})();
如果在HTML中包含jQuery和Undercore,它们将在全局范围内可用。没有必要"注入"它们。
<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>
如果你想把它们包含在一个模块中,你可以这样做:
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._;
});
}]);
这样做将允许异步加载库,同时防止它们与以前加载的版本发生冲突。可能有更好的方法来存储对已加载库的引用,但这应该可以正常工作。
此外,这个例子依赖于第三方laoder($script.js)
这是一个jsFiddle(http://jsfiddle.net/moderndegree/bzXGx/);
相关文章:
- jQuery 获取原始文本(未转义),以便通过下划线模板进一步解析
- 使用下划线和jquery在javascript中自动填充表
- 在我的jQuery/js中包含下划线模板
- 使用 jQuery 为某些单词添加下划线
- 将 jQuery Globalize 与下划线.js模板相结合
- JQuery 和下划线“每个”保证数组的顺序
- 将基于下划线 js 的函数转换为 PlainJs 或 jquery
- 在我的模板中显示数组值的总和值( jQuery 或 下划线 )
- 构建大型jQuery移动Web应用程序:使用iFrames作为页面?骨干、骨干、下划线和其他框架
- 全局使用 jquery,backbone,下划线使用 requirejs
- jQuery移动css样式未应用于下划线模板
- jQuery/JavaScript我的脚本中的活动链接-下划线不正确
- 如何使用下划线.js或 jquery 删除模式
- 向angular js组件注入jquery和下划线
- Require.js shim for lib jquery,木偶,主干,下划线
- jQuery -文本装饰下划线切换
- jQuery文本装饰下划线在导航栏
- _.findWhere从下划线到JQuery
- js 数组中的 IndexOf 元素使用真值函数,使用下划线或 jquery
- Jquery不能使用下划线.js