angular 自定义指令 repeat bind 怎么不能同时作用在同一元素上
高洛峰
高洛峰 2016-11-12 15:05:10
[AngularJS讨论组]

如题,自己写了两个指令,想作用在同意元素下,先进行repeat,后进行bind,但目前,仅第一个执行bind

731242666-58084e5c257ab_articlex.png




    
    angular
    


    
            
            123123
                 
    


1
0
0
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

第一点,clone方法只是克隆节点,绑定的事件是不会被克隆的。
第二点,动态添加节点到文档,angular 指令是不会生效的,需要动态编译。

angular.module('app',[])
// 注入 $compile 服务,用来动态编译
.directive('lxcReapeat',function($compile){
    return {
        restrict:'A',
        priority: 1000,
        link:function($scope,$elm,$attr){
            var repeatNum = $attr.lxcReapeat;
            for (var i=repeatNum-2;i>= 0;i--){
                 var dom = $elm.clone();
                 // 删除 lxc-reapeat 属性,否则动态编译会造成死循环。理解这点很重要
                 dom.removeAttr('lxc-reapeat');
                 // 动态编译并连接到scope
                 var ele = $compile(dom)($scope);
                 $elm.after(ele);
            }
        }
    }
})

效果图:

731242666-58084e5c257ab_articlex.png

731242666-58084e5c257ab_articlex.png

与ng-repeat

731242666-58084e5c257ab_articlex.png

上面这种实现,功能上没有问题,但是阵型并不是很统一。于是,稍作修改

nbsp;html>


    
    angular
     


    
        

{{i}}

                 
123123
    
    

最终对比

1671351980-5808e687a89f6_articlex.png

专题推荐
更多>
热门话题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号