Angular.js 모범 사례 - 컨트롤러 확장, 컨트롤러 기본값 재정의
여기에 내 머리를 감쌀 수 없는 현실의 각도 문제가 있습니다.저는 Angular를 좋아하지만, 이 문제는 지금 저를 많이 괴롭히고 있습니다.
기존 컨트롤러의 기능을 확장하고 애플리케이션의 다른 페이지에서 확장 컨트롤러를 사용하는 가장 좋은 방법은 무엇입니까?즉,Angular에서 컨트롤러 상속을 수행하는 방법은 무엇입니까?
편집 - 23/09/2014, 원래 사용 사례에 대한 설명이 방문객들이 제가 원하는 것을 더 잘 이해하는 데 도움이 된다고 생각하지 않습니다.저는 그것이 사람들을 진짜 이슈에서 멀어지게 한다고 생각합니다.
반년이 지난 후에 저는 무슨 일이 일어나고 있는지 완전히 이해했다고 생각합니다.이 게시물에 대한 댓글에서 지적했듯이, 가장 간단한 답은 서비스입니다.
가장 최적의 경우 모든 범위 변수는 공장/서비스에서 수집한 값입니다.그러나 $scope라는 하나의 추가 기능과 함께 완전히 동일한 컨트롤러를 사용할 수도 있습니다.일부 함수(){}, 나머지는 유지합니다.이 경우 바람직한 컨트롤러 설계인 'thin' 컨트롤러 로직이 있지만 100줄 이상의 코드가 생성될 수도 있습니다.$scope와 같은 추가 컨트롤러 로직이 필요하다고 해서 다른 컨트롤러에서 중복되는 것은 원하지 않습니다.일부 함수( )
그럼 어떻게 합니까?
답은 다음과 같습니다.
- 공장과 함께 상황을 해결하기 위해 모든 것을 다 했는지 확인하세요.
확실한 경우 컨트롤러 주입을 위해 이동합니다.
.controller('childController', function ($scope, $controller) { 'use strict'; $controller('parentController', {$scope: $scope}); $scope.someFunction=function(){} })
간단합니다. -- 보통 공장에서 해결할 수 있습니다.
유용하게 쓰이길 바랍니다 ;)
추상적인
당신이 말하는 문제는 컴퓨터 연구 분야에서 표준 솔루션이 존재하는 일반 코드 재사용 문제처럼 보입니다. (이전 세기에 발명된) 상속 문제입니다.불행하게도 OOP가 자바스크립트 커뮤니티에서 널리 채택되지 못한 수많은 이유들 때문에, 그 중 하나는 그것이 언어의 핵심 기능이 아니라는 사실입니다.또 다른 하나는 개발자들이 동일한 문제를 해결하기 위해 자신만의 접근 방식을 만들 수 있다는 사실입니다.그리고 개발자들은 이러한 다양한 접근 방식을 만들어 공동체를 여러 가지 방법으로 상속을 다루는 부분으로 분할합니다.
그것은 OOP에 대한 전체적인 생각을 흐리게 하고 사람들로 하여금 그 세 글자를 두려워하게 만듭니다.실제로 저는 수십 명의 사람들을 만나 자바스크립트가 OOP용으로 만들어지지 않았다고 말하면서 "자바스크립트는 기능적인 언어이다", "상속은 안티패턴이다", "자바스크립트가 의도하지 않은 일을 하지 말라" 등의 지적을 제기했습니다.하지만 이 사람들에게 OOP가 무엇이냐고 물었을 때...일반적으로 그들 중 누구도 답을 제공할 수 없습니다.그래서 의견이 있는 것도 좋지만 조사에 첨부해야 합니다.
정답.
그래서 당신의 질문에 답하기 위해, 저는 존 레시그의 자바스크립트 상속 접근법을 사용할 것을 제안합니다. 이 접근법은 op 상속이 실행중인 angularjs라는 SO 포스트에 자세히 설명되어 있습니다.
언급URL : https://stackoverflow.com/questions/21483555/angular-js-best-practice-extending-controllers-overriding-controller-defaults
'programing' 카테고리의 다른 글
MariaDB 프로시저 및 기능 권한 (0) | 2023.11.05 |
---|---|
Nginx rewrite를 사용하여 URL에서 index.php 제거 (0) | 2023.11.05 |
표에서 모든 짝수 ID를 선택하는 방법? (0) | 2023.11.05 |
CSS만으로 이미지 회전목마를 만들려면 어떻게 해야 합니까? (0) | 2023.11.05 |
VARCHAR 크기 제한이 중요합니까? (0) | 2023.11.05 |