当我有嵌套指令时,如何访问特定的父作用域?

时间:2014-05-16 15:28:54

标签: javascript angularjs

我正在尝试一些Angular,我仍然有我的JQuery头。

我有一个包含下拉导航的div,其中包含一个链接。当单击链接时,我希望div消失并被一些ajaxed内容替换,并且我希望标记为可标记范围。

A创建了3个嵌套指令,每个指令都有自己的范围(范围:true):

  • flaggable,对于div,当标记的内容中的这个AJAX设置为true。
  • 下拉列表,对于导航,当折叠状态设置在其范围内时,折叠并展开导航。
  • flagButton,此设置标记在最近的包含可标记元素。

我的问题,它可能是一个简单的问题,我如何从flagButton范围到最近的包含可标记范围,以便我可以在flaggable范围内设置标记参数。

我不想假设flagLink总是在下拉列表中,或者总是有3个嵌套作用域,可能会有更多。

在JQuery中,这很简单,我只是使用遍历来获取.closest('。flaggable')元素,并在其上设置值。这对我来说似乎并不是很有角度。我很可能会尝试一些荒谬的事情。

谢谢!

2 个答案:

答案 0 :(得分:1)

提示:在指令指令定义对象(和controller)中使用requireread the guide属性。

答案 1 :(得分:1)

范围相互继承。没有必要知道哪一个是最近的可标记范围。

E.g。您可以在flaggable范围内执行此操作:

$scope.setFlag = function(val) { ... };

flaggable范围内,您可以致电$scope.setValue(val),因为您始终可以确定此功能是否存在。

另一种方法是为flaggable设置控制器,并在require: '^flaggable'指令的定义中指定flagButton