Как получить доступ к функциям в Detail.controller.js в Master.controller.js ?

#sapui5 #sap-fiori

#sapui5 #sap-fiori

Вопрос:

Я изменил имя контроллера деталей на DetailController.js

Я пытался

 jQuery.sap.require("cts.alert.controller.DetailController"); 
 

И

 sap.ui.define([
        "cts/alert/controller/DetailController",
], function () {
})
 

в MasterController.js,

когда я использую this.detailfunction() , он возвращается undefined (но он работает в BaseController?)

Затем я попытался sap.ui.getCore().byId("__xmlview3--detailpage").getController().detailfunction() :

sap.ui.getCore().byId("__xmlview3--detailpage") вернул представление, но getController не определен. Что мне делать?

Комментарии:

1. ваш DetailController действительно назван DetailController.controller.js ?

2. DetailController.js не сработает? Я думаю BaseController.js работает нормально. @Marc

3. Контроллеры, которые непосредственно используются представлениями, должны называться Bla .controller.js (это одна из основных функций, которую реализует пользовательский загрузчик модулей SAP;). Базовый класс контроллера — это обычный класс, который не должен иметь .controller.js расширение. Не рекомендуется использовать базовый контроллер непосредственно в представлении. Наследовать от него в противном случае пусто .controller.js и используйте это в своем представлении.

Ответ №1:

Если это служебный метод, возможно, имеет смысл переместить код вверх, к базе, предполагая, что оба контроллера расширяют его. Если нет, создайте третий служебный модуль и внедрите его как в master, так и в detail.

Комментарии:

1. Я понимаю. Я подробно использовал setInterval, и я хочу очистить его после нажатия кнопки навигации в Master. Итак, я должен сохранить идентификатор интервала в третьем модуле? Я не хочу делать идентификатор интервала глобальным. Спасибо ~

2. В этом случае у вас может быть глобальная jsonmodel, используемая для хранения состояния приложения. Не зная более подробной информации о структуре вашего приложения, я бы сказал, что ID будет принадлежать там. С этим на месте вы читаете / записываете в эту модель из обоих представлений. Надеюсь, это поможет.

3. Большое спасибо, я понимаю, как busy и государство. Это помогает.