angular指令及广播

angular指令

1.指令:directive(类似于bootstrap中组件的功能)

描述:angularJS框架中提出了一种用来解决【大量重复冗余的页面编辑代码】的问题技巧,即为指令。

2.语法:

描述:在angular指令内部,所有的指令都是通过数据模型.directive()创建的

        app.directive(‘指令名称’,function(){

            return{

            restrict:'指令类型',

            template/templateUrl:'指令结构|指令模板|指令内容'

            replace:'true|false' 指令复写;

           }

    });

说明:

1)指令类型:restrict

描述:指令类型是指令可以在页面中通过任何形式呈现

    类型:指令共计有四种类型:“A”“E”"C"“M”

a."A”:attribute,指令通过属性方式呈现

 b .“E”element ,指令通过元素方式创建

c. "C"class ,指令通过类名创建

d.“M”comment,指令通过注释创建

注意:

a.指令名称必须采用小写,大写无效

b.指令如果是M类型,则必须采用replace :true才能显示

c.指令如果通过template加载则有且仅有一个根节点

2)指令结构template

描述:指令结构template值得是指令在页面中显示成什么样子

类型:指令结构中共有两种加载方式,分别为特莫拉特和templateUrl两种

说明:

    a.template:一=意味着指令结构中,需要直接以字符串结构形式编写HTML代码

    b.templateUrl:意味着指令结构中,需要引入HTML中的url地址

3)指令复写replace

描述:指令指的false指令在页面中是否会被当成一个子元素,但comment会失效,插入到调用本指令的元素内部


类型:布尔值类型,默认是false表示会作为子元素

说明:当指令结构式templateUrl是,replace参数不应该被写出,否则指令无法加载

3.指令方案link

描述:指令方案link是angularJS框架中提供给指令的一种“专有行为”

    这就好比bootstrap中下拉菜单的点击效果一样

    这些方案不需要开发者在外部处理结束交互方案,而是让指令直接自动拥有行为,指令方案link正式为指令添加这些行为的手段

语法:app.directive('指令名称',function(){

        link:function(scope,element,attrs{})

        })

说明:(1)scope:如果将整个指令看做是一个控制器,那么scope就相当于$scope

    因为本质是形参,所以写什么都可以

            2)element:一个包含了指令中,左右HTML元素的数组,没一个数组都是dom对象,数组整体支持jq操作,可以批量处理,dom对象本身支持原生操作。

            3)attrs:当前指令的属性对象,指的是当前指令的属性,而不是指令内部所有元素的属性,本属性可读可写,打你半只用来读取,读取采用attrs.$get,设置使用attr.$set

注意:

对于指令方案link中的scope,如果不在指令中进行初始化操作:scope:{}

那么scope就相当于mainController中的$scope,即这个$scope

能够访问到全局所有的angular变量

4.广播broadCast

描述:controller之间的数据交互尽管可以使用service服务进行实现,但是若希望‘异步监听功能,单独依靠服务是无法实现的

于是为了解决这个问题,angularJS框架提出了一种称为broadCast广播,提供了一种可能实现异步监听,以此完成controller之间的交互

前提:angular框架中的广播技巧,是用来处理具有父子关系的controller的数据

类型:anjularJS有两种表现形式,分别为broadCast(父级对子集广播)和emit(子集对父级广播)

语法:

发送广播:$scope.$broadcast|$emit(’广播频段或广播代号’,广播内容)’

监听广播:$scope.$on('广播频段或广播代号',function(事件对象,接收到的广播内容))




猜你喜欢

转载自blog.csdn.net/amily8023/article/details/80504993