大佬教程收集整理的这篇文章主要介绍了angularjs – 指令链接函数执行顺序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个自定义指令,我们称之为myDar.
在这个指令中我定义了一个链接函数.
在我的html中,我想使用此指令的多个嵌套标签,如下所示:
<myDar id="outer"><myDar id="inner"></myDar></myDar>
这是一般性问题.
如果它有帮助,那么我真正想做的是创建包装jquery ui layout(link to the website)的指令.所以我有一个“ui-layout”的指令和“中心”,“西方”等的指令.
在“ui-layout”指令中,我调用$(tElm).layout(options).
创建嵌套布局时遇到问题:
<ui-layout class="layout-container"> <ui-layout-center> <ui-layout> <ui-layout-center>inner center</ui-layout-center> <ui-layout-West>inner West</ui-layout-West> </ui-layout> </ui-layout-center> <ui-layout-West>West</ui-layout-West> </ui-layout>
Angular首先执行内部“ui-layout”指令的链接功能,但是对于jquery ui布局插件工作,它需要先调用外部的$(tElm).layout(options),否则布局不能正确呈现.
完整的示例代码是:
app.directive("y",function() { function Controller($element) { this.$element = $element; this.children = []; } Controller.prototype.register = function(child) { this.children.push(child); }; Controller.prototype.execute = function() { console.log("PAYLOAD: " + this.$element.attr("id")); for( var i=0; i < this.children.length; i++ ) { this.children[i].execute(); } }; return { require: "y",controller: ["$element",Controller],link: function(scope,element,attrs,ctrl) { var e = element.parent(),nested = false; while( e != null ) { if( e.controller("y") != null ) { e.controller("y").register(ctrl); nested = true; break; } e = e.parent(); if( typeof(e.tagName) === "undefined" ) break; //XXX Needed,at least for fiddle } if( !nested ) ctrl.execute(); } }; });
替换行console.log(“PAYLOAD:”this.$element.attr(“id”));用实际的代码来运行.见相关小提琴:http://jsfiddle.net/8xSjZ/
如果外部指令与当前指令不同,那么获取父控制器就像要求“?^ y”一样简单.在这种情况下,它为我们提供了当前的控制器,因此我们必须循环(e.parent())selfelfes.
以上是大佬教程为你收集整理的angularjs – 指令链接函数执行顺序全部内容,希望文章能够帮你解决angularjs – 指令链接函数执行顺序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。