2014-10-24 2 views
2

Я создал директиву для страницы, которая добавляет некоторые анимации в контент. HTML выглядит следующим образом:Объем внутри области. AngularJS

<div flip-animation> 
    <span flip-animation-left> 
    <img src="/images/viceralfat.png"> 
    </span> 
    <figcaption flip-animation-right> 
    Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
    </figcaption> 
</div> 

так, как вы видите внутри DIV есть flip-animation которым есть еще два childrend flip-animation-left и flip-animation-right так, что я wonna сделать, чтобы захватить flip-animation и проверить его ребенок, является ли он влево или правильно. Если это правильно, у меня есть одна функция, но если она оставлена, у меня есть другая функция. Мой вопрос заключается в том, что как я могу проверить, правильно ли это или левая

EDIT вот моя директива:

«использовать строгий»;

'use strict'; 

angular.module('myApp') 
    .directive('flipAnimation', function($window) { 
    return { 
     restrict: 'A', 
     link: function(scope, elem) { 
     // here I wonna check if its right or left 
     } 
    }; 
    }); 

ответ

4

Определит функцию в controller от «родительской» директивы, которая будет потребляться своими детьми директивами. Затем внутри дочерних директив используйте require, чтобы иметь доступ к директиве parent директивы controller, чтобы дочерние директивы могли использовать функцию своего родителя.

Как это:

angular.module('myApp') 
.directive('flipAnimation',['$window', function($window) { 
    return { 
     restrict: 'A',   
     controller: function(){ 
      this.flip = function(flipRight){ 
       if(flipRight){ 
        //Code for Flip Right here 
       }else{ 
        //Code for Flip Left here 
       }     
      } 
     }, 
     link: function link(scope, elem, attrs) {} 
    } 
}]) 
.directive('flipAnimationpRigth',function() { 
    return { 
     restrict: 'A',   
     require: '^flipAnimation',   
     link: function link(scope, elem, attrs, ctrl) { 
      ctrl.flip(true); 
     } 
    } 
}) 
.directive('flippAnimationLeft',function() { 
    return { 
     restrict: 'A',   
     require: '^flipAnimation',   
     link: function link(scope, elem, attrs, ctrl) { 
      ctrl.flip(false); 
     } 
    } 
}); 
+0

дорогой @Josep, спасибо за вашу реагировать. Ваш путь - это решение, но у меня все еще есть недоразумение. Теперь, когда «Left» и «Right» разделены, как я могу получить доступ к элементу «Right» или «Left». То, что я подразумеваю под этим «глупым» вопросом, заключается в том, что когда я вхожу в '' '' if if (flipRight) {} '' '' '' '' elem'''should дать мне '' ''

... ... '' '' – Max

+0

@Max самый простой способ (может быть, и не ставки) - передать его в качестве параметра. В контроллере «flipAnimation» измените определение функции «flip» как эта функция this.flip = (flipRight, childElem) {... ', а затем, когда вы вызываете функцию из одной из дочерних директив, выполните следующее:' ctrl .flip (false, elem); ' – Josep