栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何通过递归要求访问父指令的控制器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何通过递归要求访问父指令的控制器?

好,找到了…

如果要获取父元素的控制器,请执行以下操作:

...link: function(scope, iElement, iAttrs, controller) {    // http://docs.angularjs.org/api/angular.element    // jQuery/jqLite Extras:    //    // controller(name) - retrieves the controller of the current element or its parent.    // By default retrieves controller associated with the ngController directive.    // If name is provided as camelCase directive name, then the controller for this    // directive will be retrieved (e.g. 'ngModel').    var parentCtrl = iElement.parent().controller('box');}...

这将返回父指令的控制器,或者返回更高一级的父指令的父指令的控制器。如果您需要确保获得DIRECT父指令的控制器,我发现了这一点(也许有更好的解决方案,我没有知道):

...controller: function($scope, $element) {    // store the element in controller, we'll need it later    this.$element = $element;},// works in both pre and post link functionslink: function() {    var parentElement = $element.parent();    var parentCtrl = parentElement.controller('box');    var hasDirectBoxParent = parentCtrl && parentCtrl.$element[0] === parentElement[0];}...

范例1:

<box id="a">    <box id="b"></box><box>

在“框a”上调用链接函数时

undefined
,两种情况下都使用parentCtrl
。在“框b”上调用链接功能时,在两种情况下parentCtrl都是“框a”的控制器。

范例2:

<box id="a">    <div>        <box id="b"></box>    </div><box>

在“框a”上调用链接函数时

undefined
,两种情况下都使用parentCtrl 。当在“ box
b”上调用链接函数时,在两种情况下parentCtrl仍是“ box
a”的控制器,但是hasDirectBoxParent为
false
,因此您可以将父项与祖父母区分开。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号