将缩小的jQuery插件转换为普通JavaScript插件
我正在运行一个项目,人们可以在地图上找到医生,并在线预订 之前我决定使用Angularjs并更改整个项目,所以我不得不忘记我以前使用过的一些jQuery插件 **问题**: 我正在使用一个jQuery插件,它可以与GoogleMapAPI()配合使用,我在AngularJS中没有找到任何其他可以与这个插件相比的东西 所以我只能在我的站点中同时使用jquery和angular以及这个插件,但我不知道,我觉得同时使用jquery和angular是错误的,因为我认为这会使我的第一个负载很重 **问题:** 1-是否可以将此插件转换为普通Javascript,这样我就可以在我的站点中省略Jquery 2-如果没有,我能做什么将缩小的jQuery插件转换为普通JavaScript插件,javascript,jquery,angularjs,minify,Javascript,Jquery,Angularjs,Minify,我正在运行一个项目,人们可以在地图上找到医生,并在线预订 之前我决定使用Angularjs并更改整个项目,所以我不得不忘记我以前使用过的一些jQuery插件 **问题**: 我正在使用一个jQuery插件,它可以与GoogleMapAPI()配合使用,我在AngularJS中没有找到任何其他可以与这个插件相比的东西 所以我只能在我的站点中同时使用jquery和angular以及这个插件,但我不知道,我觉得同时使用jquery和angular是错误的,因为我认为这会使我的第一个负载很重 **问题:
3-我可以使用RequireJS在我的站点中加载jquery和这个插件吗?(我不知道如何:()将min.js文件转换为您可以使用的normal.js 但它只是设置了表格和空格,并使脚本可读 例如,此脚本:
var a={log:function(){try{var e=Array.prototype.slice.call(arguments);if(typeof e[0]==="string"){if(/[\{\}]/.test(e[0])&&e.length>1){var t=e.length>2?e.slice(1):e[1];return console.log(this.text(e[0],t))}}return console.log.apply(console,e)}catch(n){}}}
将是:
var a = {
log: function () {
try {
var e = Array.prototype.slice.call(arguments);
if (typeof e[0] === "string") {
if (/[\{\}]/.test(e[0]) && e.length > 1) {
var t = e.length > 2 ? e.slice(1) : e[1];
return console.log(this.text(e[0], t))
}
}
return console.log.apply(console, e)
} catch (n) {}
}
}
我不知道Landcarte插件,所以我无法帮助您解决问题1 如果您想初始化jquery插件,但它不工作,那么问题的一个常见原因是DOM还没有准备好 要解决此问题,有三种选择: 方法1在指令的link属性内初始化插件。在link函数中,指令元素的子元素已经编译并链接。如果插件仅依赖于元素的子元素为DOM就绪,则此选项适用
app.directive('myDirective', function(){
return {
link: function(scope, element,attr){
element.plugin();
}
}
});
方法2使用$evalAsyc,该方法在编译和链接阶段之后但在呈现阶段之前运行。如果插件依赖于整个页面已准备好DOM,则使用此方法,但表达式是否已呈现并不重要
app.directive('myDirective', function(){
return {
link: function(scope, element,attr){
scope.$evalAsync(function(scope){
element.plugin();
});
}
}
});
app.directive('myDirective', function($timeout){
return {
link: function(scope, element,attr){
$timeout(function(){
element.plugin();
});
}
}
});
方法3使用$timeout,该方法在呈现阶段后运行。如果插件依赖于整个页面已准备好DOM,并且所有表达式都已呈现,请使用此方法
app.directive('myDirective', function(){
return {
link: function(scope, element,attr){
scope.$evalAsync(function(scope){
element.plugin();
});
}
}
});
app.directive('myDirective', function($timeout){
return {
link: function(scope, element,attr){
$timeout(function(){
element.plugin();
});
}
}
});
根据插件的不同,这些选项中的一个应该适合您。选择一个至少满足插件需要的选项-即选择选项1、选项2、选项3,但最终选择一个有效的选项。Landcarte也可以在没有jQuery的纯JS代码中使用。映射可以通过显式调用<代码>at.geo.Map类构造函数:
var container = document.getElementById("map");
var map = new at.geo.Map(container);
该类在.中提到过,如何将jquery函数转换为普通的JS?可以在jquery中完成的任何事情都可以在纯JavaScript中完成。(jquery就是这样做的。)问题标题与问题描述不匹配。您是否正在尝试取消缩小jquery插件?还是正在尝试使jquery插件在angularjs中工作?