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 rootScope a una directiva

se puede pasar el $rootScope de alguna manera a una directiva creada por nosotros en angular, en el parametro require o dentro de link

Es decir algo como esto:

Drtv_NoiseInterruptor.directive('noiseInterruptor', function(){
        return {
            require: "ngRootScope",//esto no funciona
            link: function(scope, element, attrs ){

                    $('.interruptor').on('click', function () {
                        console.log("click in interruptor");
                        var noise = $("input:radio[name=interruptor]:checked").val();
                        console.log(noise);
                        if (noise === "encendido") {
                            console.log("noise true");
                            $rootScope.noiseOnOff(true);//funcion del rootScope que deseo utilizar
                        } else if (noise === "apagado") {
                            console.log("noise false");
                            $rootScope.noiseOnOff(false);
                        }
                    });

            }  
        };
    });

1 Respuesta

1voto

magarzon Puntos30650

Tienes que inyectarlo del mismo modo que se inyecta en otros componentes:

Drtv_NoiseInterruptor.directive('noiseInterruptor', ['$rootScope', function($rootScope){
        return {
            link: function(scope, element, attrs ){

                    $('.interruptor').on('click', function () {
                        console.log("click in interruptor");
                        var noise = $("input:radio[name=interruptor]:checked").val();
                        console.log(noise);
                        if (noise === "encendido") {
                            console.log("noise true");
                            $rootScope.noiseOnOff(true);//funcion del rootScope que deseo utilizar
                        } else if (noise === "apagado") {
                            console.log("noise false");
                            $rootScope.noiseOnOff(false);
                        }
                    });

            }  
        };
    }]);

De todas formas, es una mala práctica añadir funciones al $rootScope

0voto

juanLuna comentado

Muchas gracias, he estado horas buscando soluciones, vi como requerir algún módulo de angular por ejemplo el ngModel desde require, así -- require: "ngModel" --. y pensé que podría hacer lo mismo con el $rootScope, .. require: "ngRoot" pero me equivocaba, no había intentado una inyección.

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