2017-01-01 23 views
0

我已經建立了一個簡單的角度項目,其中有一個基本模板。這個基礎模板導入所有必要的庫,並在其中運行一個簡單的jQuery函數。事情是這樣的:Javascript函數不影響角模板

<html ng-app='myApp'> 
    <body> 
     <div><input type="text"></div> 
     <div ng-view></div> 
     // Imports 
     <script> 
      (function() { 
       $('input').each(function() { 
        $(this).addClass('doSomething'); 
       }); 
      })(); 
     </script> 
    </body> 
</html> 

所以,基本上,功能增加了一類在我的DOM的所有輸入元素。 ng-view之外的第一個輸入元素受到這個函數的影響。

但是,可以說我有我的ng視圖模板中的輸入元素,這些奇怪地不受函數的影響。這是爲什麼?看來我的jQuery函數不能訪問我的Angular模板的DOM。

有沒有解決方案?運行可影響Angular模板的通用函數的理想方式是什麼?

謝謝。

+0

爲什麼你不這樣做(或者搜索一個已經存在)的指令? – Maxime

+0

爲每個輸入添加一個類似乎你應該使用一個簡單的CSS類:'input {your_code}' – Maxime

+0

@Maxime爲什麼你更喜歡使用元素名稱作爲選擇器而不是類? – 1252748

回答

0

這些模板並不是隱式「包含」的;他們通過動態角碼獲得(並且可能基於異步事件,例如在主頁面onload事件觸發後發生的http請求)。所以你不能保證DOM將被角度構造,除非你以某種方式與角度合作。

解決這個問題的'正確'方法可能是爲'input'標籤寫入一個角度指令,以增加類(而不是像上面那樣使用jQuery);當然這是'正確的'添加事件監聽器的方式等。