码迷,mamicode.com
首页 > 其他好文 > 详细

自定义指令

时间:2015-11-22 17:23:15      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:



    现今市场上的前端框架也只有AngularJS 拥有自定义指令的功能,并且AngularJS 是目前唯一提供Web应用可复用能力的框架。

指令的几种使用方式:

      作为标签(E):<my-dir></my-dir>
    
      作为属性(A):<span my-dir="exp"></span>
    
      作为注释(M):<!-- directive: my-dir exp -->
    
      作为类名(C):<span class="my-dir: exp;"></span>
    
自定义指令的配置参数

    mainApp.directive(‘namespaceDirectiveName‘, function factory(injectables) {
    
            var directiveDefinitionObject = {
    
                restrict: string,//指令的使用方式,包括标签(E),属性(A),类(C),注释(M)
    
                priority: number,//指令执行的优先级
    
                template: string,//指令使用的模板,用HTML字符串的形式表示
    
                templateUrl: string,//从指定的url地址加载模板
    
                replace: bool,//是否用模板替换当前元素,若为false,则append在当前元素上
    
                transclude: bool,//是否将当前元素的内容转移到模板中
    
                scope: bool or object,//指定指令的作用域
    
                controller: function controllerConstructor($scope, $element, $attrs, $transclude){...},//定义与其他指令进行交互的接口函数
    
                require: string,//指定需要依赖的其他指令
    
                link: function postLink(scope, iElement, iAttrs) {...},//以编程的方式操作DOM,包括添加监听器等
    
                compile: function compile(tElement, tAttrs, transclude){
    
                    return: {
    
                        pre: function preLink(scope, iElement, iAttrs, controller){...},
    
                        post: function postLink(scope, iElement, iAttrs, controller){...}
    
                    }
    
                }//编程的方式修改DOM模板的副本,可以返回链接函数
    
            };
            return directiveDefinitionObject;
    });

示例:

        mainApp.directive("sayHello",function(){
            return {
                //配置指令类型:C(类) E(标签) A(属性) M(注释)
                restrict:"EA",
                //模板:<b ng-transclude>用来告诉指令把内容转移到的位置</b>
                template:"<p>hello,<b ng-transclude></b></p>",
                //替换
                replace:true,
                //作用是把内容转移到<b ng-transclude></b>中
                transclude:true
            };
        });
        
        <say-hello>你好!!!</say-hello>

自定义指令

标签:

原文地址:http://www.cnblogs.com/muqnly/p/4986072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!