angular的指令directive

更新时间:2023-07-28 06:05:36 阅读: 评论:0

指令Directive
可以利用指令来扩展HTML的标签(但是不兼容IEE8以下)。
1、指令API
varmyModule = dule("urInfo", []);
myModule.directive("directiveName", function () {
vardirName = {
restrict: string,
template: string,
templateUrl: string,
priority: number,
replace: bool,
transclude: bool,
scope: boolOrObject,
controller: functioncontrollerConstructor($scope, $elm, $attrs, $transclude) { },
require: string,食用油十大品牌
compile: function (element, attrs, controller) { },
link: function (scope, element, attrs, controller) { }
    }
returndirName;
});
Directive的API:
指定属性参照表:
记叙性散文
属性
作用
备注
restrict
描述指定在模板中的使用方式,如:元素E,属性A,CSS样式类C,注释M
便携式dvd
EMAC
template
内联模板
二者使用其一
templateUrl
加载模板使用的URL
priority
设置指令在模板中的执行顺序(顺序是相对于其他指令而言的)
replace
True替换指令所在的元素;fal或者不设置,则把当前指令追加到所在的元素内部
transclude
把指令元素中原来的子节点移动到一个新模板内部
scope
为当前的指令创建一个新的作用域(独立作用域)
节粮
controller
创建一个控制器,它会暴露一个API,利用API在多个指令之间进行通信
require
要求必须存在另外一个指令,当前指令才能正常运行
compile
在使用ng-repeat时,用编程的方式修改最终生成的DOM,实现一个指令跨越多个实例。Compile返回一个link函数
link
用编程的方式修改最终生成的DOM,添加事件监听器,并设置数据绑定
推荐使用
2、angular的初始化过程
3、指令下的compile和link
compile和link是根据angular创建动态视图的两个处理阶段来命名的。Compile函数的作用是对模板自身进行转换,而link函数负责在模型和视图之间进行动态关联。
3.1 compile和link的区别
1. Compile函数的作用是对指定的模板进行转换;
2. Link的作用是在模型和视图之间建立关联包括在元素上注册时间监听
3. Compile只有3个参数,link有4个参数;
4. Scope在链接阶段才会被绑定到元素上因此compile阶段操作scope报错
5. 对于同一个指定的多个实例compile只会执行一次而link对于指令的每个实例都会执行一次
6. 一般情况我们只要编写link函数就够了
7. 如果你编写的自定义的compile函数自定义的link函数无效因为compile函数应该返回一个link函数供后续处理
3.1 compile和link的区别对照表
对比项
Compile
Link
作用
对自身的模板进行转换
模型和视图之间的动态关联
执行次数
1 次
多次
执行阶段
编译阶段
链接阶段
参数
3个,function(element,attrs,transclude)
4个,function(scope,element,attrs,controller学龄前儿童
4 实例
HTML
<divclass="container"ng-controller="urs">
<divclass="panel">
<divclass="panel-default panel-heading">
<h1>指令下的compilelink操作</h1>
</div>
<divclass="panel-body">
<h2>请填写信息</h2>
<divclass="write-info">
请输入你的名字:
<inputtype="text"ng-model="urInfo.name"/><br/><br/>
请输入你的手机:
<input磅的英文type="text"ng-model="l"/><br/><br梦见自己染头发/>
请输入你的邮箱:
<inputtype="text"ng-model="ail"/><br/><br/>
</div>
<h2>用户信息</h2>
<divclass="showinfo">
用户信息123
<urinfo>
<div>asdasd</div>
</urinfo>
</div>
</div>
</div>
</div>
JS:
varmyModule = dule("urInfo", []);
ller("urs", function ($scope) {
    $scope.urInfo = {
name: "",
tel: "",
email: ""
    }
});
myModule.directive("urinfo", function () {
vardirUr= {
restrict: "E"杞人忧天的意思,
        template: "<div>name:{{urInfo.name}}<br/>age:{{l}}<br/>Email:{{ail}}<div>",
replace: fal,
link: function (scope, elment, attrs, controller) {
            console.log("urinfo下的link:")
            scope.urInfo.name = "请输入内容";
        }
    }
returndirUr;
});

本文发布于:2023-07-28 06:05:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1121267.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指令   模板   函数   视图   输入   元素   阶段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图