Como posso chamar um método definido no escopo filho de seu escopo pai?
function ParentCntl() {
// I want to call the $scope.get here
}
function ChildCntl($scope) {
$scope.get = function() {
return "LOL";
}
}
angularjs
angularjs-scope
9 azul
fonte
fonte
Respostas:
Você pode usar
$broadcast
de pai para filho:Trabalhando violino: http://jsfiddle.net/wUPdW/2/
ATUALIZAÇÃO : Existe outra versão, menos acoplada e mais testável:
Fiddle: http://jsfiddle.net/uypo360u/
fonte
$scope.$parent
ou em$scope.$parent.$parent
etc.)? Ah, sim: passe um callback em params! :)$emit
de um filho para um pai. Acho que é hora de atualizar minha resposta.$parent
)$broadcast
e você pode eliminar opingBack
completamente.Deixe-me sugerir outra solução:
Menos código e usando herança prototípica.
Plunk
fonte
$scope.obj.get()
seja uma função válida.Registre a função da criança no pai quando a criança estiver inicializando. Usei a notação "como" para maior clareza no modelo.
MODELO
CONTROLADORES
"Mas", você diz, "
ng-init
não deve ser usado desta forma !". Bem sim, masEu digo que este é um bom uso para isso. Se você quiser me negar, por favor, comente com os motivos! :)
Gosto dessa abordagem porque mantém os componentes mais modulares. As únicas ligações estão no modelo e significa que
Essa abordagem se aproxima mais da ideia de Tero de modularização com diretivas (observe que, em seu exemplo modularizado,
contestants
a diretiva é passada de pai para "filho" NO MODELO).Na verdade, outra solução pode ser considerar a implementação do
ChildCntl
como uma diretiva e usar a&
vinculação para registrar oinit
método.fonte
Você pode fazer um objeto filho.
Aqui, a criança está provando o destino do método get.
fonte