2016-07-08 2 views
0

사용자 유형이 다른 사용자 유형의 특성을 상속하도록 허용하려고합니다. 직원 구성원은 부모 개체이고, 수학 교수는 수학 교수가 직원 구성원의 속성을 상속하는 자식 개체입니다. 어떻게 구현할 수 있습니까? 어떤 도움을 주셔서 감사합니다.AngularJS에서 상속을 구현하는 방법은 무엇입니까?

코드 조각 :

app.service('WorkService', function($http) { 
    var user; 

this.isStaffMember = function() { 
    return user.type ==== 'StaffMember' 
} 
this.isMathProfessor = function() { 
    return user.type === 'MathProfessor' 
} 
}); 

UPDATE :

[참고 :. 내가 isStaffMember에 isTeacher 객체의 이름을 변경]

내가 아마 할 것을 생각했다 HTML에서 코드를 변경하면 속성을 상속하는 것이 필요합니다. HTML에서는 StaffMember가 코스를 추가하고 편집하는 2 가지 옵션 만 볼 수 있도록 구현하려고합니다. 그러나 수학 교수는 전체 메뉴를 볼 수 있습니다. 작동하지 않는데, 내가 추가 할 때 메뉴가 전혀 표시되지 않습니다. & & WorkService.isMathProfessor().

<li ng-show="WorkService.isStaffMember()" && ng-show="WorkService.isMathProfessor()" class="dropdown"> 
        <a class="dropdown-toggle">Courses 
        <ul> 
         <li><a>New Course</a></li> 
         <li><a>Add Course</a></li> 

         <div ng-show="WorkService.isMathProfessor()"> 
          <li class=""></li> 
          <li><a>Algebra I</a></li> 
          <li><a>Algebra II</a></li> 
         </div> 
        </ul> 
       </li> 

답변

0

확실히 HTML 이내에하는 데 필요한 변경되지 자바 스크립트 기능. AngularJS 지시문 (ng-show)에는 isMathProfessor를 포함시켜야했지만 해결하기 시작한 실수는 내가 만든 실수였습니다. || 대신에 & & 연산자를 사용했습니다. 운영자.

<li ng-show="WorkService.isStaffMember() || WorkService.isMathProfessor()> 

이렇게 변경하면 처음 2 가지 선택 사항이 직원 또는 수학 교수 중 하나 인 경우 표시됩니다. 그러나 마지막 3 가지 선택은 수학 교수에게만 가능합니다.

0

이것은 ES6 또는 TypeScript에서 훨씬 더 쉽습니다. ES5에서는 Browserify 및 commonJS 모듈을 사용하는 경우 이러한 파일을 개별 파일로 쉽게 나눌 수 있습니다. 이 예제에서는 하나의 파일로 가정합니다.

function Work() { 
    this.job = 'drone'; 
} 
Work.prototype.getJob = function() { 
    return this.job; 
} 

app.service('Work', Work); 

Teacher.prototype = new Work(); 
function Teacher() { 
    this.job = 'teacher'; 
} 

app.service('Teacher', Teacher); 

MathTeacher.prototype = new Teacher(); 
function MathTeacher() { 
    this.job = 'mathTeacher'; 
} 

app.service('MathTeacher', MathTeacher); 

당신은 그냥 다음과 같을 것이다 ES6 또는 타이프 MathTeacher을 사용한 경우

:

class MathTeacher extends Teacher { 
    job = 'mathTeacher'; 
} 
관련 문제