所以我有两个具有相同指令的元素:(coffeescript)
myApp.directive "clickOutside", ["$document", ($document) ->
restrict: "A"
link: (scope, elem, attr, ctrl) ->
elem.bind "click", (e) ->
e.stopPropagation()
$document.bind "click", ->
scope.$apply attr.clickOutside
]
和 HTML:
<div class="filter-box" click-outside="showFilterList=false">
<div class="filter-title" ng-click="showFilterList=!showFilterList;">Open</div>
<ul class="filter-list" ng-class="{show:datePickerModel.showFilterList}">
<li></li>
...
...
</ul>
</div>
<div class="filter-box" click-outside="showFilterList=false">
<div class="filter-title" ng-click="showFilterList=!showFilterList;">Open</div>
<ul class="filter-list" ng-class="{show:datePickerModel.showFilterList}">
<li></li>
...
...
</ul>
</div>
我有 2 个 DIV,单击过滤器标题会将 showFilterList 更改为 true,从而过滤器列表获得“显示”类。在元素外部单击会将 showFilterList 设置为 false 并再次隐藏 filter-list。在一个场景中一切正常:单击第一个元素过滤器标题并显示过滤器列表。单击第二个元素 filter-title 将显示自己 filter-list 但不会将已单击的第一个元素设置为 false。
我该怎么做才能让每个指令在触发时都有自己的范围?
谢谢!