Platform.api.registerController(): Promise

Platform에서 콘텐츠를 조절할 수 있는 컨트롤러 객체를 등록한다.

구문

Platform.api.registerController(controller);

매개변수

  • controller: {Controller} 콘텐츠 컨트롤러
  • Controller: Platform에서 콘텐츠를 조절하는 기능을 가진 Interface
    • Controller는 플랫폼에서 콘텐츠에 요청하는 중계자 역할을 한다. 플랫폼에서는 등록된 Controller의 아래 기능 제공 여부를 판단하여, 콘텐츠 실행 화면에 제공되는 조작 버튼의 표시 여부나 활성화 여부를 결정하고, 콘텐츠로부터 필요로 하는 정보를 얻는다.
    • setData({String} type, {String} data): Promise
      • 값을 세팅한다
        • {String} type: 저장할 데이터 종류
        • {String} data: 저장할 데이터
      • resolve: 정상적으로 값을 적용했을 경우
      • reject: 정상적으로 값을 적용하지 못 한 경우
    • getSummary(): Promise
      • 현재 콘텐츠 사용에 대한 요약 정보를 얻는다. 현재는 사용자가 실험노트 작성 버튼을 눌렀을 때, getSummary()를 통해 얻은 정보를 실험노트 초기 내용으로 설정하여 작성 창을 보여 준다.
      • resolve: 정상적으로 요약 정보를 전달
        • {String} HTML 형식의 요약 정보
      • reject: 요약 정보를 제공하지 못 한 경우

반환 값

응답 객체로 이행하는 Promise 객체.

예제

var step; // 현재 진행 중인 단계
var stepName: // 현재 진행 중인 단계명
var toltaStep = 7; // 전체 단계
var point; // 현재 진행 중인 단계 획득 점수

var controller = {
   setData: function(type, data) {
      // type 값에 따른 정보 처리
      ....
   },
   getSummary: function() {
      return new Promise(function(resolve) {
         var html = '<ul>'
               + '<li>학습과제명: ' + stepName + '</li>'
               + '<li>진행률: ' + (Math.round(step * 1000 / totalStep) / 10) + '%</li>'
               + '<li>점수: ' + point + '점</li>'
               + '</ul>';
         resolve(html);
      });
   }
};

// 콘텐츠 콘트롤러 등록
Platform.api.registController(controller)
   .then(function() {
       console.log('콘텐츠 콘트롤러를 등록했습니다.');
   });


// 현재 콘텐츠 실행 내용 조회. 플램폼 쪽에서 호출
Platform.api.getSummary()
   .then(functioin(html) {
      return openLabNoteRegModal(html); // openLabNoteRegModal에서 Promise를 return
   })
   .then(functioin(labNote) {
      return $.post('/lab-note', labNote);
   })
  .then(functioin(resposne) {
      if (response != 'SUCCESS') {
         alert(response.message || '실험노트 저장시 오류가 발생하였습니다.');
         return;
      }

      console.log('실험노트 저장 완료.');
  });

2023. 5. 16 오전 11:04:36 편집