0

私はこのようなhtmlを持っています

  <div  class="main" ng-controller="firstcontroller">
       <div class="submain">
           <div class="first" ng-show="display">displayed</div>
           <div class="second" my-directive>click</div>
       </div>
       <div class="submain">
           <div class="first" ng-show="display">displayed</div>
           <div class="second" my-directive>click</div>
       </div>
       <div class="submain">
           <div class="first" ng-show="display">displayed</div>
           <div class="second" my-directive>click</div>
       </div>
 </div>

私はこのようなコントローラを持っています

     app.controller('firstcontroller',function($scope)
     {
         $scope.display=false;

     });

このような私のディレクティブコーディング

 app.directive('myDirective',function(scope, element, attrs)
 {
    return function()
    {
        element.bind('click',function()
       {
             element.prev().show();
            //alert(element.prev().attr('class'));

        //   element.parent().find('.main').append('<div>Some text</div>')
       });


    }

 });

ここで、div のクラス名が fist の場合、最初は div は非表示になり、クラス名が second の div のみが表示されます。したがって、クリック div をクリックすると、そのクリックされた div の前の div のみを表示する必要があります..... angular.js でクリックされた div の前の div を表示するにはどうすればよいですか?

4

1 に答える 1

2

質問に情報が不足しているように感じます。たとえば、.submaindiv はハードコードされていますか、それとも反復によって作成されていますか?

ただし、これが実際に当てはまる場合、ディレクティブは冗長です。HTML を次のように変更します。

<div  class="main" ng-controller="firstcontroller">
   <div class="submain">
       <div class="first" ng-show="display[0]">displayed</div>
       <div class="second" ng-click="display[0] = !display[0]">click</div>
   </div>
   <div class="submain">
       <div class="first" ng-show="display[1]">displayed</div>
       <div class="second" ng-click="display[1] = !display[1]">click</div>
   </div>
   <div class="submain">
       <div class="first" ng-show="display[2]">displayed</div>
       <div class="second" ng-click="display[2] = !display[2]">click</div>
   </div>
</div>

そしてコントローラー:

 app.controller('firstcontroller',function($scope) {
     $scope.display=[false, false, false];
 });
于 2013-11-07T12:24:05.413 に答える