2016-05-22 5 views
2

Ich möchte eine benutzerdefinierte Dienstprogramm-Datei (JavaScript-Datei) erstellen, dh /webapp/util/MyUtil.jsWie Nutzenfunktionen in SAPUI5 Controller nennen

Angenommen, dies der Inhalt des MyUtil ist:

function myFunc(input) { 
    // some code 
} 

und es gibt einen Blick und Controller dh View1.xml und View1.js.
Wie kann ich anrufen myFunct(input) von View1.js?

Antwort

7

Der empfohlene Weg ist es, ein Modul (ähnlich Klasse) zu erstellen, die Ihre Abhängigkeiten in der Zukunft umgehen kann:

sap.ui.define([], function() { 
    "use strict"; 

    return { 
     myFunc: function(input) { 
     // some code 
     } 
    }; 
}); 

Später in Ihrem Controller umfasst diese Datei in der Abhängigkeitsliste und Zugriff es durch dieses Objekt:

sap.ui.define([ 
    "sap/ui/core/mvc/Controller", 
    "./MyUtils" 
], function(Controller, MyUtils) { 
    "use strict"; 

    return Controller.extend("your.controller.ControllerName", { 
     myFunc2: function(input) { 
     MyUtils.myFunc(input); 
     } 
    }); 
}); 

Stellen Sie sicher, dass Sie den richtigen Pfad angeben. Wenn es der Ordner des Controllers ist, können Sie das Beispiel verwenden, andernfalls zeigen Sie auf den richtigen Ordner.

+0

Vielen Dank !! Ich hatte Schwierigkeiten, die benutzerdefinierte Modulerstellung durch Dokumentation zu verstehen. Ich werde es testen und die Antwort markieren :) – user12

+0

Ich habe eine andere Frage, vielleicht können Sie helfen. Ich habe ein Backend über Odata verfügbar gemacht. Ich verzehre dies in Application1 und Application2. Wenn ich mein Odata-Modell aus Application1 aktualisiere, werden die Änderungen in der Benutzeroberfläche von Application1, nicht aber in App2 wiedergegeben, sofern ich nicht auf meine App2 verweise. Wie kann ich sofortige Aktualisierung in App2 auch erreichen? Vielen Dank. – user12

+0

Ich denke, das ist nicht möglich. In der gleichen Anwendung können Sie Ereignishandler an das Änderungsereignis des Modells anhängen, es ist jedoch auch auf clientseitige Änderungen beschränkt. Was Sie implementieren möchten, ist ein serverseitiges Benachrichtigungssystem, bei dem es sich nicht um eine reine UI5-Aufgabe handelt. Ich würde empfehlen, Daten automatisch abzurufen, oder erstellen Sie einen Delta-Dienst, der nur die Änderungen enthält, und Ihre Anwendung kann diesen Dienst automatisch mithilfe eines Timers auslösen. – nistv4n