1. ホーム
  2. angularjs

[解決済み】AngularJSのコントローラは、同じモジュール内の別のコントローラを継承できますか?

2022-04-13 09:49:59

質問

モジュール内で、コントローラは外部のコントローラからプロパティを継承することができます。

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

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

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

経由の例です。 デッドリンク : <ストライク http://blog.omkarpatil.com/2013/02/controller-inheritance-in-angularjs.html

モジュール内のコントローラも兄弟から継承できますか?

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
});

2番目のコードは、以下のように動作しません。 $injector.invoke は最初のパラメータとして関数を要求し、その関数への参照を見つけられませんでした。 ParentCtrl .

解決方法は?

はい、可能です。 $controller サービスを使用して、コントローラをインスタンス化します。

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
});