2015-02-02 6 views
0

Я реализую директиву для перелистывания карт в AngularJs.Изолированный масштаб в директиве Flip Flip Директива

  • HTML (Jade)

    card 
           display 
            | this is sid 
            input.btn.btn-primary(type='submit', value='Save',ng-click="flip()") 
           editor 
            | this is test 
            input.btn.btn-primary(type='submit', value='Save',ng-click="flip()") 
    
          card 
           display hey siddharth 
           editor huu ulujh 
    
  • Директива

    'card': function() 
    { 
    return { 
        restrict: 'EA', 
        link: function($scope, $elem, $attrs) { 
    
         var options = { 
          flipDuration: ($attrs.flipDuration) ? $attrs.flipDuration : 400, 
          timingFunction: 'ease-in-out' 
         }; 
    
    
         angular.forEach(['display', 'editor'], function(name) { 
          var el = $elem.find(name); 
          if (el.length == 1) { 
           angular.forEach(['', '-ms-', '-webkit-'], function(prefix) { 
            angular.element(el[0]).css(prefix + 'transition', 'all ' + options.flipDuration/1000 + 's ' + options.timingFunction); 
           }); 
          } 
         }); 
    
    
         $scope.flip = function() { 
          $elem.toggleClass('flipped'); 
         } 
    
        } 
    }; 
    } 
    

Проблема: если я использую только один экземпляр директивы т.е. как в выше HTML только верхний директива с кнопками, она отлично работает. Но когда у меня есть несколько экземпляров директивы, как показано выше, один щелчок по указанному выше экземпляру переворачивает все экземпляры.

Этого не должно быть. флип должен быть ограничен/ограничен его собственными возможностями. Я попытался изолировать область действия директивы, добавив область действия: {}, выше функции ссылки, но все равно не влияет.

Пожалуйста, если кто-нибудь может мне помочь, как это сделать правильно.

Edit: Plunker Link - http://plnkr.co/edit/372da6O25hOrBxpT0oX2?p=preview

Помощь Оценил :-)

+0

Можете ли вы сделать живой пример? Здесь, как фрагмент, или на plunkr, или что-то еще ... – Shomz

+0

Вот код в плункере: http://plnkr.co/edit/372da6O25hOrBxpT0oX2?p=preview –

ответ

0

попробовать с scope: true вместо scope: {}

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). – Ben

+0

Почему это не ответ? если пользователь делает это, я сказал, что он сможет решить свою проблему. Он просит решение проблемы, и я ответил с решением. Как вы можете видеть, я не могу комментировать его пост, потому что у меня недостаточно репутации. Поэтому, если я хочу помочь, мне нужно создать ответ. – nada

+0

@nada: Спасибо! scope: true, он работает. Если бы вы могли вести меня с другим ожидаемым поведением, упомянутым на plunker :-) –