Solución:
Sí, puede pero tienes que usar el $controller
servicio para instanciar el controlador en su lugar: –
var app = angular.module('angularjs-starter', []);
app.controller('ParentCtrl', function($scope) {
// I'm the sibling, but want to act as parent
});
app.controller('ChildCtrl', function($scope, $controller) {
$controller('ParentCtrl', {$scope: $scope}); //This works
});
En caso de que esté utilizando vm
sintaxis del controlador, aquí está mi solución:
.controller("BaseGenericCtrl", function ($scope) {
var vm = this;
vm.reload = reload;
vm.items = [];
function reload() {
// this function will come from child controller scope - RESTDataService.getItemsA
this.getItems();
}
})
.controller("ChildCtrl", function ($scope, $controller, RESTDataService) {
var vm = this;
vm.getItems = RESTDataService.getItemsA;
angular.extend(vm, $controller('BaseGenericCtrl', {$scope: $scope}));
})
Desafortunadamente, no puedes usar $controller.call(vm, 'BaseGenericCtrl'...)
, para pasar el contexto actual al cierre (por reload()
) función, por lo tanto, solo una solución es usar this
dentro de la función heredada para cambiar dinámicamente el contexto.
Creo que debería usar la fábrica o el servicio para proporcionar funciones o datos accesibles para ambos controladores.
aquí hay una pregunta similar —> Herencia del controlador AngularJS
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)