摘要:代码: 看看控制台:从控制台可以看出,指令初始化甚至比控制器还早。难道说指令一旦定义,就算不在DOM中使用也会初始化?我们删掉DOM中的代码,再看控制台,发现指令并不初始化。所以推测不对。注意我们使用了两次d指令,但是指令的初始化只运行了一次。这个要特别小心。另...
阅读全文
摘要:例子: Hello {{greeting}}!以上代码,暂时注释掉terminal:true输出为:Hello AngularJs!把//去掉,再看,一片空白,审查元素看看:d2的优先级已经设置得比d1高,从控制台也可以看出d2的链接函数被调用了。但是Hello...
阅读全文
摘要:priority默认值为0.当一个元素上声明两个指令,而且它们的priority一样,谁先被调用?这个需要分情况讲。下面先给个例子: {{greeting}}!输出:Hello AngularJs World !可见ng-init先行一步,把greeting赋值...
阅读全文
摘要:multiElement不太常用,从下面这个例子可以大致看出它的作用: 在Chrome浏览器中审查元素,看看控制台输出:由此可知传给连接函数的element不是单个元素,而是3个,包括两个span和一个回车符。实际上,我们把HTML代码改成:控制台输出:这时候我...
阅读全文
摘要:在前面文章中提到一旦声明了require,则链接函数具有第四个参数:controller。可见require和controller是配合使用的。在自定义指令中使用controller,目的往往是要封装一些行为,给其他指令使用。下面是一个简单的例子: Hello {{gr...
阅读全文
摘要:在指令中操作DOM,我们需要link参数,这参数要求声明一个函数,称之为链接函数。写法:link: function(scope, element, attrs) { // 在这里操作DOM}如果指令使用了require选项,那么链接函数会有第四个参数,代表控制器或者所依赖的指令的控制器。// r...
阅读全文
摘要:transclude默认值为false,如果设置transclude为true,那么相应地,必须在模板代码中加入ng-transclude指令。先看个例子: 小标题1 小标题2 输出:大标题见鬼!小标题全不见了!审查元...
阅读全文
摘要:我们之所以要定义指令,目的是重用指令。假设有这么一个应用场景:在同一个html里使用了两次my-directive,第一个my-directive要展示的是Hello World,第二个my-directive要展示的是Hello AngularJs。为了实现上面的想法,一个做法是创建两个控制器(因...
阅读全文
摘要:一些用于定义行为的指令,可能不需要使用template参数。当指定template参数时,其值可以是一个字符串,表示一段HTML文本,也可以是一个函数,这函数接受两个参数:tElement和tAttrs。前者用的较为普遍,而且也好理解。后者暂不理会。下面是一个例子,在模板中使用rootScope里定...
阅读全文
摘要:下面所有例子都使用angular-1.3.16。下载地址:http://cdn.bootcss.com/angular.js/1.3.16/angular.min.js既然AngularJs快要发布2.0,所以现在也没必要追求最新版本。而且,2.0变动实在太大,所以当前学习AngularJs不需要过...
阅读全文