2017-04-09 74 views
-1

我創建具有以下模板指令(簡體):角的element.find()無法找到嵌套的輸入元素

<table> 
    <tr> 
     <td> 
      <input type="text"/> 
     </td> 
     <td> 
      <input type="text"/> 
     </td> 
    </tr> 
</table> 

在指令中的鏈接功能我想聽衆添加到輸入,但我無法獲得輸入元素。該指令如下所示:

angular.module('app').directive('myDirective', function(){ 
    return{ 
     restrict: 'E', 
     templateUrl: '<path-to-above-html-file>', 
     link: function(scope, element, attr){ 
      var inputs = element.find('input'); // Returning empty JQLite object 
     } 
    }; 
}); 

根據Angular元素文檔,find()方法應該能夠找到嵌套元素。但爲什麼這不起作用呢?

我試圖在控制檯中打印元素並循環遍歷所有子元素,並且輸入確實存在。

任何幫助表示讚賞!

+0

嘗試使用this'element.querySelector( '輸入')' –

+1

你的指令和'element.find( '輸入')'工作正常這裏http://plnkr.co/edit/HIUbDoVbgCShf9OjGnKa – charlietfl

+0

謝謝。這使我意識到輸入的數量來自控制器中的一個值,該值在console.log後加載。 – KMK

回答

-1

如果要訪問元素,請使用querySelector()。但請注意,querySelector只返回第一個子元素。

如果你想獲得的所有元素使用querySelctorAll()像下面

element.querySelectorAll("input") 
+0

呵呵? ''input「'是一個標籤名稱 – charlietfl