2014-06-10 20 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提及。