2014-06-10 67 views
0

我运行一个项目,人们可以在地图上寻找医生,而网上预订,普通...转换的缩小jQuery插件为JavaScript插件

以前我决定使用Angularjs和改变整个项目,所以我不得不忘记我以前使用过的一些jQuery插件。

** **问题:

我使用一个jQuery插件,工作真棒与谷歌地图API(Landcarte),我还没有发现任何其他与此插件在AngularJS比较。

所以我不能做任何事情,除了在我的网站中同时使用jquery和angular以及这个插件,但我不知道,我觉得它使用jquery和angular都是错误的,因为我认为这会让我的第一个负载变得沉重。

**问题:**

1 - 这是可能的,以这个插件转换成普通的JavaScript,所以我可以省略Jquery的在我的网站?

2-如果不是,我该怎么办?

3-我可以在我的网站中使用RequireJS加载jQuery和这个插件吗? (我不知道如何:()

+1

任何可以在jQuery中完成的事情都可以在直接的JavaScript中完成。 (这就是jQuery所做的。) – isherwood

+0

问题标题与问题描述不匹配。你是否想要取消jquery插件?或者你是否试图让jquery插件在angularjs中工作? – pixelbits

回答

1

我不知道该Landcarte插件,所以我不能帮你的问题1.

如果你想初始化一个jquery插件,但它不工作,这个问题的一个常见原因是DOM尚未准备好。

为了解决这个问题,有三种选择:

方法1初始化您的指令的链接属性里面的插件。在链接函数中,指令元素的子元素已经被编译和链接。如果你的插件只依赖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(); 
         }); 
       } 
      } 
    }); 

方法3其呈现阶段之后运行使用$超时。如果您的插件依赖整个DOM已准备就绪,并且所有表达式都已呈现,请使用此方法。

app.directive('myDirective', function($timeout){ 
      return { 
       link: function(scope, element,attr){ 
         $timeout(function(){ 
           element.plugin(); 
         }); 
       } 
      } 
    }); 

根据插件,其中的一个选项应该为你工作。最好选择满足插件需求的最低要求 - 意思是选择1,优于选项2,优于选项3,但最终选择适用的选项。

0

要打开min.js文件到normal.js可以使用this 但它只是设置表格和空间,使脚本可读性

例如这个脚本:

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) {} 
    } 
} 
+0

把jquery函数转换成普通的JS怎么样? – Milad

0

Landcarte可以在没有jQuery的纯JS代码中使用。一个地图可以由at.geo.Map类的构造函数的显式调用初始化:

var container = document.getElementById("map"); 
var map = new at.geo.Map(container); 

这个类是在reference提及。