AngularJS:Directiva para el Controlador de comunicación con alcance.no se aplican de trabajo
-
21-12-2019 - |
Pregunta
Tengo un MainController y anidada a la Directiva.Estoy mirando este ejemplo para ver cómo funciona la comunicación entre los controladores y la directiva, pero la mía no parece funcionar.
Básicamente, quiero llamar a un controlador principal del alcance de la función de una costumbre de la directiva (botón de carrito vacío).Ver el plunkr ejemplo a continuación.
Plukr: http://plnkr.co/edit/82STLkKxBK6htTnmnqlu?p=preview
Cada vez que hago la consola.log(ámbito de aplicación.$la aplicación("emptyCart()")), es indefinido, por alguna razón.
Nota:Estoy tratando de evitar $rootScope.difusión tanto como sea posible...
Solución
Estás usando aislar alcance para que el padre de la directiva, por lo que el niño directiva no tiene acceso a la alcance de la controladora.
Con el fin de proporcionar al niño la directiva con el acceso a ese ámbito de la función mientras se mantiene el aislamiento de los padres, puede agregar que funcionan como un scope: { ... }
propiedad en el padre de la directiva:
scope: {
...
emptyCart: '='
}
y establecer el nombre de la función para el atributo correspondiente en el padre de la directiva de la vista de la declaración:
<div ... data-show="showPopup" empty-cart="emptyCart"></div>
Entonces puede saltarse todas las soluciones que hemos intentado emplear en su Plunker, y acaba de establecer un ng-click
en el niño la directiva en orden a fuego la función de controlador:
sHTML = "<button ... ng-click='emptyCart()'>Empty cart</button>";