求助!angular在指令中无法获取子元素的问题?

大冒险 发布于 2015/10/31 22:45
阅读 606
收藏 0

 首先,指令selector-child以属性的方式在div元素中


<div id="ed" selector-child>
    <div class="testClass">我是没有任何指令的</div>
    <div class="listClass" ng-repeat="aa in aas">{{aa.text}}</div>有ng-repeate指令
</div>

控制器中也定义了aas的模型数据

$scope.aas = [
            {
               'text':"ds",
            },
            {
                'text':"ds2",
            },
            {
                'text':"ds3",
            }
        ];

想通过类名来查找具有ng-repeate指令的的元素列表,结果显示为空,没有指令的类名却可以查到,为什么,求解????

myApp.directive('selectorChild', function () {
        return {
            restrict: "A",
            link: function (scope,element,attr) {
             console.log(element.find('.testClass'));
              // 可以找到没有任何指令的子元素->输出结果[div.testClass]
             console.log(element.find('.listClass'));
              // 在有ng-repeat指令的子元素却找不到,结果为空
            }
        };
    });







加载中
1
艾边成
艾边成
selectorChild 指令执行的时候 ng-repeat 还没渲染吧。这写法本来就有问题,很难控制执行顺序。
大冒险
大冒险
回复 @艾边成 : 了解~谢谢了
艾边成
艾边成
回复 @大冒险 : 用$timeout也不是好的方案,如果 aas 发生变化了,ng-repeat渲染的dom也会改变,你指令里拿到的dom会是过时的。我觉得可以把子节点放进 selector-child 指令来管理(template)比较好
大冒险
大冒险
恩 确实是ng-repeat还没有渲染 加个$timeout就可以获取到了,谢谢回答,不过,想通过父元素的指令来获取子元素怎样写好?
0
cokolin
cokolin

ng的指令有一个执行优先级的,可以了解一下

0
xper
xper
有没有试过ng-model,,这也问题建议查手册有详细例子,应该是你要的,select的数据绑定
0
xper
xper
例子:select ng-model="sel.qq.loc" ng-options="loc.word for loc in locations" ng-change="erjiloc('qq')"  能看懂不 绑定数据在sel.qq.loc=选择的数据
xper
xper
@大冒险 假如你要使用select的话,绑定数据后,所选择的就是在绑定的数据中,就不用再获取元素了,也许理解错了,O(∩_∩)O~
大冒险
大冒险
我是要在指令里选择ng-repeat的元素类,你弄个数据绑定干啥?
返回顶部
顶部