0

したがって、同じディレクティブを持つ 2 つの要素があります: (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>

filter-title をクリックすると showFilterList が true に変更され、それによって filter-list が「show」クラスを取得する 2 つの DIV があります。要素の外側をクリックすると、showFilterList が false に設定され、filter-list が再び非表示になります。最初の要素 filter-title をクリックして filter-list を表示するという 1 つのシナリオを期待して、すべてが正常に機能しています。2 番目の要素 filter-title をクリックすると、それ自体が filter-list に表示されますが、既にクリックされた最初の要素は false に設定されません。

トリガーされたときに各ディレクティブが独自のスコープを持つようにするにはどうすればよいですか?

ありがとう!

4

1 に答える 1