>  기사  >  웹 프론트엔드  >  AngularJS 컨트롤러는 다른 컨트롤러에서 상속됩니다.

AngularJS 컨트롤러는 다른 컨트롤러에서 상속됩니다.

WBOY
WBOY원래의
2016-05-16 09:00:202259검색

AngularJS의 컨트롤러 상속에서는 범위 중첩 범위가 일반적으로 사용됩니다. 기본적으로 현재 범위에서 속성을 찾을 수 없으면 상위 범위에서 검색됩니다. 찾을 수 없으면 $rootScope를 찾을 때까지 검색됩니다.

그러나 어떤 경우에는 rootScope가 컨트롤러이므로 rootScope에 많은 공개 속성 메서드를 작성하는 것이 불가능합니다.

예를 들어 탐색경로, 검색창, 도구 모음, 테이블 등과 같은 요소가 포함된 유사한 페이지가 여러 개 있는 경우 탐색경로 테이블과 같은 요소가 지시문으로 만들어진 것으로 간주되면 필연적으로 페이지가 많아질 것입니다. 유사한 구성 요구 사항을 컨트롤러에서 구성 요소로 전달하면 데이터 처리 등을 위한 도구 클래스 메서드도 많이 생성됩니다. 이때 각 페이지의 컨트롤러에 동일한 코드를 반복적으로 작성하는 것은 분명히 보기 흉한 일이므로 상속은 필요합니다.

StackOverflow에서 해결책을 찾았습니다. AngularJS는 이미 이 상황을 고려하여 $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
});

위 내용은 editor 당신이 소개한 AngularJS 컨트롤러는 다른 컨트롤러에서 상속되었습니다. 도움이 되길 바랍니다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.