我完全同意所有使用模塊,事件總線的流行語。在另一個控制器中調用一個控制器的方法?
我會嘗試用更簡單的詞語來重新解釋我的問題,因爲我是這個框架的新手,我想以簡單的方式理解它。所以這裏是我想要實現的:
我有一個問卷控制器綁定到調查問卷視圖。現在我需要使用我的xsjs從後端獲取一些數據並綁定到此視圖。我需要在頁面呈現之前獲取這些數據,所以我在Before Rendering和我的ajax調用的完整屬性中使用了我的ajax調用,我需要執行一些vaildations。由於我在完整屬性中的功能太長,我正在考慮創建一個單獨的控制器,然後定義我的方法,它會在這裏進行ajax調用和必要的驗證。這個新的控制器只是擁有這個方法定義,因此它不被綁定到任何視圖。
現在我應該如何在調查問卷控制器中調用此控制器,並使用其調用ajax調用並在控制器方法中執行驗證的方法?
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel",
"sap/m/MessageBox"], function(Controller, JSONModel, MessageBox) {
var questionnaireResponseId;
var password;
var backendJSON;
Controller.extend("OnlineQuestionnaire.controller.Questionnaire", {
onInit: function() {
jQuery.sap.require("jquery.sap.storage");
},
onBeforeRendering: function() {
questionnaireResponseId = jQuery.sap.storage.get("QuestionnaireResponseId");
password = jQuery.sap.storage.get("Password");
backendJSON = loadStack(questionnaireResponseId); //This is not correct way to call
}
這種方法在QuestionStack.controller.js
loadStack(questionnaireResponseId) {
jQuery.ajax({
url: "",
method: "GET",
dataType: "json",
complete: this.onSuccess,
error: this.onErrorCall
});
return output;
}
如果其他控制器沒有綁定到任何視圖,那麼爲什麼它是一個控制器?它不只是一個可重複使用的模塊嗎? – amiramw
類型的模塊來保存額外的代碼,並減少代碼的複雜性在我的Questionnaire.controller.js – loki
方法onBeforeRendering不是加載數據的地方。您應該使用路由機制並在特定路由匹配時執行數據加載。 – matbtt