200 votos

Un controlador de AngularJS puede heredar de otro controlador en el mismo módulo.

Dentro de un módulo, un controlador puede heredar las propiedades de un fuera de controlador:

var app = angular.module('angularjs-starter', []);

var ParentCtrl = function ($scope, $location) {
};

app.controller('ChildCtrl', function($scope, $injector) {
  $injector.invoke(ParentCtrl, this, {$scope: $scope});
});

Por ejemplo a través de: http://blog.omkarpatil.com/2013/02/controller-inheritance-in-angularjs.html

También puede un controlador dentro de un módulo de heredar de un hermano?

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, $injector) {
  $injector.invoke(ParentCtrl, this, {$scope: $scope}); //This does not work
});

El segundo código no funciona desde $injector.invoke requiere una función como primer parámetro y no encontrar la referencia ParentCtrl.

292voto

SalmanPK Puntos 6649

Sí, puede, pero tienes que usar el $controller servicio para crear una instancia del 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
});

8voto

LauroSkr Puntos 589

Creo que usted debe usar la fábrica o servicio, dar datos o funciones accesibles para ambas controladoras.

Esta es una pregunta similar---> herencia AngularJS controlador

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X