Angular指令无法获取子元素?

时间:2015-10-31 17:21:26

标签: javascript angularjs html5

首先,指令selector-child位于属性中的div元素中。

 <div id="ed" selector-child>  // selector-child attrs directive
    <div class="testClass">Im no any directive</div>
    <div class="listClass" ng-repeat="aa in aas">Im has ng-repeate directive{{aa.text}}</div>      
 </div>

然后,控制器中的 aas模型数据也被定义为

最后,希望通过类名来搜索此列表中元素的ng-repeate指令。  结果显示是空的,但是找不到指令类名,为什么?解决???

myApp.directive('selectorChild', function () {
    return {
        restrict: "A",
        link: function (scope,element,attr) {
         console.log(element.find('.testClass'));
          // can be found -> ouput [div.testClass]
         console.log(element.find('.listClass'));
          // no found -> ouput is empty[]
        }
    };
});

2 个答案:

答案 0 :(得分:2)

您应该使用JQlite的querySelector方法:

 console.log(element[0].querySelector('.listClass'));

答案 1 :(得分:1)

尝试使用$timeout允许在dom中生成ng-repeat

myApp.directive('selectorChild', function ($timeout) {
    return {
        restrict: "A",
        link: function (scope,element,attr) {
         $timeout(function(){
            console.log(element.find('.listClass'));
         });
        }
    };
});

作为替代方法,您可以向require此指令的重复元素添加另一个指令,然后使用$last子范围的ng-repeat属性来执行您计划执行的操作< / p>