2016-11-08 4 views
1

Ich habe versucht, die beste Praxis hier gepostet: https://www.ibm.com/developerworks/community/blogs/a9ba1efe-b731-4317-9724-a181d6155e3a/entry/best_practices_for_customizing_maximo_anywhere_javascript?lang=en für die Anpassung der StatusChangeHandler.commitWOStatusChange-Funktion.Anpassung mixin Best Practice für StatusChangeHandler.commitWOStatusChange

Nahm eine Kopie der ursprünglichen Funktion wie beschrieben: nach

commitWOSTatusChange: function(eventContext) { 

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

Im Grunde möchte ich sicherstellen, dass sie durchführen dürfen die Statusänderung:

var originalCommitWOStatusChange = StatusChangeHandler.commitWOStatusChange 

Dann ist es als solches nutzen wollte auf benutzerdefinierte Bedingungen (als Beispiel ein Worklog).

Wenn jedoch das Framework auf meinen Code trifft, führt es sofort die ursprüngliche Funktion aus, ohne meine Bedingungen zu testen. Es scheint, dass die Variable zum Speichern der Funktion bewirkt, dass sie ausgeführt wird und den Rest meines Codes ignoriert.

Mache ich das auf die richtige Art oder müssen wir einen anderen Prozess verfolgen, um die Ausführung des Änderungsstatus zu steuern?

Wenn ich die Variable entferne, kann ich erreichen, dass sie meinen Code trifft, aber die ursprüngliche Funktion direkt aufruft, nachdem dies Fehler ausgelöst hat.

Dank

Bill

Antwort

0

unsere Anwendung Handlers sind Dojo Klassen "erklären", so dass sie anders als andere Javascript-Dateien überschrieben werden müssen.

Hier ist eine Beispielklasse, die die vorhandene Methode StatusChangeHandler.js überschreibt.

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); 
      } 
     }, 


    }); 
}); 

Sie benötigen Verweise auf StatusChangeHandler in Ihrem app.xml mit diesem ExtendedStatusChangeHandler ersetzen es durch die App geladen werden zu bekommen.

+0

Ich bin hier genau wie oben, aber ein bisschen durch Zufall gekommen - ich hatte vorher zu viel in meiner Rückkehr erklären Danke Scott! –