2015-12-09 91 views
0

角的方法,我在角很新。我需要一個初學者的最佳方式引導定義函數來獲取標記(如DIV),並通過querySelectorAll和的getElementsByTagName ID /類(#blah或.blah)的長度或算的,所以它可以在HTML模板被調用,獲取頁面上特定元素的當前計數。爲querySelectorAll和的getElementsByTagName

function countTag(value1, value2) { 
    var top_level_div = document.getElementById(' + value1 + ') 
    top_level_div.document.getElementsByTagName(' + value2 + ’).length 
} 

function countElem(value) { 
    document.querySelectorAll(' + value + ’).length 
} 

如何對上述2個函數進行角度化,以便它們可以在應用程序內的任何位置調用html模板?如果指令可能是這樣做的方法,任何人都可以幫助一個plnkr例子嗎?

+0

當我開始做角我曾經認爲這是一些其他實體不是JavaScript 。不是!它只是更多的JavaScript。您可以使用這些常規的JavaScript函數。你的問題就像「如何將JavaScript添加到JavaScript(Angular)?」只要注意參考和範圍,它應該沒問題。 –

+0

我從來沒有想過角是js的另一個實體。另外,我的問題遠不是「如何將js添加到js(angular)」。我的問題字面上如上。如何對它進行角度化以便它可以在頁面上被稱爲「功能(值)」。一個非常新的初學者也是非常直接的,所以假人可能會爲我的技術訣竅服務。 –

+0

爲什麼你不使用jQuery?當你導入jQuery的角度會自動設置angular.element(這是對庫的引用,在某些情況下,該角將包裝DOM對象)旁註:如果你不加載jQuery的角度將使用爲角叫了一個庫[jqLit​​e](https://docs.angularjs.org/api/ng/function/angular.element),它是jQuery的精簡版本。 – BAM5

回答

0

如果your're使用您的「DDO」(指令定義對象)一個指令,您可以訪問jQuery對象的「元素」屬性(如果jQuery是加載angular.js文件之前引用的)。

在您的鏈接功能(或compile.post法)剛剛與元素屬性進行交互。

Ex。

.directive('sampleDrv', function() { 
    return { 
    ... 
    link: function (scope, element) { // + other attributes 
     // Just use your jQuery logic/function provider in an example 
     // Only difference is now syntax ex. document == angular.element(document) 

      function sampleFn() { 
       var sampleElementText = angular.element(document).find('p').text(); 
       console.log(sampleElementText); 
      } 

      sampleFn(); 

    } 
}) 

您也可以在控制器上使用$元素對象,但不建議以這種方式與元素交互。

你也可能想看看斯科特 - 阿倫那短暫的解釋 - http://odetocode.com/blogs/scott/archive/2014/05/28/compile-pre-and-post-linking-in-angularjs.aspx

而且

https://docs.angularjs.org/api/ng/function/angular.element

+0

這只是指令的示例,不完全是我可以合理應用的示例。 –