2017-01-01 66 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);当然这是'正确的'添加事件监听器的方式等。