2016-11-08 3 views
1

StatusChangeHandler.commitWOStatusChange 함수를 사용자 정의하기 위해 여기에 게시 된 베스트 프랙티스를 시도했습니다 : https://www.ibm.com/developerworks/community/blogs/a9ba1efe-b731-4317-9724-a181d6155e3a/entry/best_practices_for_customizing_maximo_anywhere_javascript?lang=en .StatusChangeHandler.commitWOStatusChange에 대한 베스트 프랙티스

commitWOSTatusChange: function(eventContext) { 

if(conditionsAreFalse) { 
    Message to User to Fix Conditions; 
} 
else { 
    originalCommitWOStatusChange(eventContext); 
} 

는 기본적으로 나는 그들이 따라 상태 변경을 수행 할 수 있습니다 확인하려면 :

var originalCommitWOStatusChange = StatusChangeHandler.commitWOStatusChange 

는 다음과 같은 사용하고 싶었 : 설명

는 원래 함수의 사본을 툭 (예제로 입력 된 작업 로그).

프레임 워크가 내 코드에 도달하면 내 조건을 테스트하지 않고 원래 기능을 즉시 실행합니다. 함수를 저장하는 변수가 실행되어 나머지 코드가 무시됩니다.

올바른 방법으로이 작업을 수행하고 있습니까? 아니면 변경 상태 실행을 제어하기 위해 다른 프로세스를 따라야합니까?

변수를 제거하면 코드가 손상 될 수 있지만 오류 발생 후 바로 원래 함수를 호출 할 수 있습니다.

감사

답변

0

우리의 응용 프로그램 핸들러는 다른 자바 스크립트 파일과 다르게 오버라이드 (override) 할 필요가 있으므로 도장이 "선언"클래스입니다.

다음은 기존 StatusChangeHandler.js 메서드를 재정의하는 클래스의 예입니다.

define("application/handlers/ExtendedStatusChangeHandler", 
     [ "dojo/_base/declare", 
     "application/handlers/StatusChangeHandler", 
     ], 
function(declare, StatusChangeHandler) { 
    return declare(StatusChangeHandler, { 

     /** 
     * Commit changes to WO Status (handle OK button clicked) 
     * @function 
     * @param {string} eventContext - javascript variables context. 
     */ 
     commitWOStatusChange: function(eventContext){ 
      if (true) 
       console.error("Custom WO Status Change"); 
      else { 
       this.inherited(arguments); 
      } 
     }, 


    }); 
}); 

당신은이 응용 프로그램에 의해로드 할 수이 ExtendedStatusChangeHandler으로 app.xml에 StatusChangeHandler로 참조를 교체해야합니다.

+0

나는 우연히 만난 적이 있지만 우연히 만난다. 이전에 너무 많이 내 귀환 선언을했다. 감사합니다! –