entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Pasar y capturar un servicio en una directiva desde el controlador en AngularjS

Buenas, estoy haciendo una directiva para usarla como pagination en angularjs y utilizarla siempre que la necesite, estoy pasandole el servicio con el cual trabajaré y luego enviar el resultado hacia el controlador.
en mi controlador tengo la variable service = resultado de un servicio. luego la envio a mi directiva de esta forma:
<paginationx service="board.servicio"></paginationx>
entonces dentro de mi directiva tengo este código:

function paginationx(){
        var directive = {
          link: link,
          templateUrl: 'template/directive-template/ejemplo.html',
          restrict: 'EA',
          scope: {
            serviceData: '=service'
          }          
        };
        return directive;
        function link(scope, element, attrs){          
          console.log(scope.serviceData);
        } //fin de la función link
    }

y cuando lo ejecuto me retorna en consola undefine y no sé si será que debe ser implementado en compile o de otra manera.
Saludos Dairon

0voto

dairon comentado

ya lo solucioné, metí el log dentro de una función y funcionó bien cuando la misma se ejecuta y manteniendo todo el código igual a como lo tenía.
Lo que aún no logro y que necesito es poder trabajar con el objeto serviceData

2 Respuestas

1voto

dairon Puntos17120

Ya solucioné, en realidad existen varias vias para comunicar varias diractivas en AngularJs, entre ellas está la que es usando el scope la cual permite compartir información con el hijo de forma jerarquica, también compartiendo informción a travez de servicios y la que utilicé al final como solución de mi problema y me llegó como anillo al dedo fue usando el $RootScope así gracias al databinding de AngularJS cargo los datos que necesito desde mi contoller y lo manipulo desde mi directiva.
Saludos Dairon

1voto

Jesusmaster Puntos1610

Dairon, prueba de la siguiente forma.

<pagination-x service="board.servicio"></pagination-x>
app.directive("paginationX",function(){
 return {
      restrict: 'AE',
      template: 'template/directive-template/ejemplo.html',
      scope : {
        service : "="
      },
 link: function (scope, elem, attrs) {
     console.log(scope.service);
 };
});

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta