¿Cómo se puede llamar a un método definido en el ámbito secundario desde su ámbito principal?
function ParentCntl() {
// I want to call the $scope.get here
}
function ChildCntl($scope) {
$scope.get = function() {
return "LOL";
}
}
angularjs
angularjs-scope
9azul
fuente
fuente

Respuestas:
Puede usar
$broadcastde padre a hijo:Violín de trabajo: http://jsfiddle.net/wUPdW/2/
ACTUALIZACIÓN : Hay otra versión, menos acoplada y más comprobable:
Violín: http://jsfiddle.net/uypo360u/
fuente
$scope.$parento en$scope.$parent.$parent, etc.)? Ah, sí: ¡pasa una devolución de llamada en params! :)$emitde un niño a un padre. Creo que es el momento de actualizar mi respuesta ..$parent)$broadcasty puede eliminar el porpingBackcompleto.Permítanme sugerirles otra solución:
Menos código y usando herencia prototípica.
Ruido sordo
fuente
$scope.obj.get()es una función válida.Registre la función del niño en el padre cuando el niño se está inicializando. Usé la notación "como" para mayor claridad en la plantilla.
MODELO
CONTROLADORES
"Pero", dices, "¡
ng-initno se supone que se use de esta manera !". Bueno si peroDigo que este es un buen uso para él. Si quieres rechazarme, ¡comenta con las razones! :)
Me gusta este enfoque porque mantiene los componentes más modulares. Los únicos enlaces están en la plantilla y significa que
Este enfoque se acerca más a la idea de Tero de modularizar con directivas (nótese que en su ejemplo modularizado,
contestantsse pasa de directiva padre a "hijo" EN LA PLANTILLA).De hecho, otra solución podría ser considerar implementar el
ChildCntlcomo una directiva y usar el&enlace para registrar elinitmétodo.fuente
Puedes hacer un objeto secundario.
Aquí el niño está probando el destino del método get.
fuente