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...

¿Fue útil?

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>";

Demo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top