摘要: 代码: 看看控制台: 从控制台可以看出,指令初始化甚至比控制器还早。难道说指令一旦定义,就算不在DOM中使用也会初始化?我们删掉DOM中的 <div d></div><div d></div> 代码,再看控制台,发现指令并不初始化。所以推测不对。 注意我们使用了两次d指令,但是指令的初始化只运行了一 阅读全文
posted @ 2017-07-13 16:07 铭绘 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 例子: 以上代码,暂时注释掉terminal:true 输出为: Hello AngularJs! 把//去掉,再看,一片空白,审查元素看看: d2的优先级已经设置得比d1高,从控制台也可以看出d2的链接函数被调用了。 但是 这个东西完全被丢弃了。官方文档的说法是:设置terminal为true的指 阅读全文
posted @ 2017-07-13 16:06 铭绘 阅读(707) 评论(0) 推荐(0) 编辑
摘要: priority 默认值为0. 当一个元素上声明两个指令,而且它们的priority一样,谁先被调用?这个需要分情况讲。下面先给个例子: 输出: Hello AngularJs World ! 可见ng-init先行一步,把greeting赋值为'Hello ',然后是指令d2的链接函数,最后是d1 阅读全文
posted @ 2017-07-13 16:02 铭绘 阅读(682) 评论(0) 推荐(0) 编辑
摘要: 在前面文章中提到一旦声明了require,则链接函数具有第四个参数:controller。 可见require和controller是配合使用的。 在自定义指令中使用controller,目的往往是要封装一些行为,给其他指令使用。下面是一个简单的例子: 输出: Hello World! 从这个例子可 阅读全文
posted @ 2017-07-13 15:54 铭绘 阅读(1180) 评论(0) 推荐(0) 编辑
摘要: transclude默认值为false,如果设置 transclude为true,那么相应地,必须在模板代码中加入ng-transclude指令。 先看个例子: 输出: 大标题 见鬼!小标题全不见了!审查元素看看: 魂淡,全丢没了! 没办法,出动transclude!看代码: 输出: 大标题 小标题 阅读全文
posted @ 2017-07-13 15:40 铭绘 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 我们之所以要定义指令,目的是重用指令。假设有这么一个应用场景:在同一个html里使用了两次my-directive,第一个my-directive要展示的是Hello World,第二个my-directive要展示的是Hello AngularJs。 为了实现上面的想法,一个做法是创建两个控制器( 阅读全文
posted @ 2017-07-13 15:35 铭绘 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 一些用于定义行为的指令,可能不需要使用template参数。 当指定template参数时,其值可以是一个字符串,表示一段HTML文本,也可以是一个函数,这函数接受两个参数:tElement和tAttrs。 前者用的较为普遍,而且也好理解。后者暂不理会。 下面是一个例子,在模板中使用rootScop 阅读全文
posted @ 2017-07-13 15:18 铭绘 阅读(922) 评论(0) 推荐(0) 编辑
摘要: AngularJs自定义指令时,要求返回一个指令定义对象(Directive Definition Object),该对象可以声明若干属性和方法。下面例子的restrict、template就是其中之一。 restrict是一个可选的参数,若不声明,则取默认值EA。 可选值包括:E(元素)A(属性) 阅读全文
posted @ 2017-07-13 14:50 铭绘 阅读(1813) 评论(0) 推荐(0) 编辑
摘要: 在指令中操作DOM,我们需要link参数,这参数要求声明一个函数,称之为链接函数。 写法: link: function(scope, element, attrs) { // 在这里操作DOM} 如果指令使用了require选项,那么链接函数会有第四个参数,代表控制器或者所依赖的指令的控制器。 / 阅读全文
posted @ 2017-07-13 14:45 铭绘 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 废话不多说,下面就直接上代码 angular指令的详解就到这 阅读全文
posted @ 2017-07-13 14:25 铭绘 阅读(349) 评论(0) 推荐(0) 编辑