Как сделать статус с помощью другой кнопки значка и перейти к другой функции в контроллере

#sapui5

#sapui5

Вопрос:

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

 <Button icon="{= (${TaskStatus} === 'OPEN') ? 'sap-icon://wrench' : 'sap-icon://accelerated' }"> </Button>
  

Ответ №1:

Я бы посоветовал создать sap.m.Button для каждой функции и установить видимость на основе вашего свойства ‘TaskStatus’.

 <Button icon="sap-icon://wrench" press="function1" visible="{= ${TaskStatus} === 'OPEN' }"/>
<Button icon="sap-icon://accelerated" press="function2" visible="{= !${TaskStatus} === 'OPEN' }"/>
  

Делая это, вы даете 1 действие определенной кнопке, что, на мой взгляд, облегчает чтение для возможных будущих разработчиков вашего проекта.

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

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

2. Вы не упомянули, что кнопка была помещена в таблицу. Если в таблице, вы можете попытаться окружить 2 кнопки VBox. Это связано с тем, что каждая ячейка в строке ожидает только 1 элемент управления.

3. в любое время, счастливого кодирования!

Ответ №2:

xml:

 <Button 
    id="idButton" 
    icon="{= (${TaskStatus} === 'OPEN') ? 'sap-icon://wrench' : 'sap-icon://accelerated' }"
    press="onButton"/> 
  

контроллер:

 onButton: function () {
    if ( this.getView().byId("idButton").getIcon() === "sap-icon://wrench" ) {
        this._functionA();
    } else if ( this.getView().byId("idButton").getIcon() === "sap-icon://accelerated" ) {
        this._functionB();
    } else {
        //some error handling
    }
},


_functionA: function() {
    //ur logic
}

_functionB: function() {
    //ur logic
}
  

ответ на комментарий:
getIcon работает для меня (протестировал код в одном из моих проектов):
введите описание изображения здесь

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

1. привет. я пробовал ваше решение, но оно не сработало для контроллера. ошибки нет, просто когда я нажимаю на значок, ничего не происходит. похоже, что он не смог прочитать значок из представления.

2. это потому, что, например, когда я помещаю this._functionA() в else { //некоторая обработка ошибок} — часть, все значки могут успешно запустить функцию. так что я думаю, что что-то не так с той частью, чтобы получить значок

3. ui5.sap.com/1.62.0/#/api/sap.m.Button/methods/getIcon как вы видите, это должно сработать, пытались ли вы отладить его и посмотреть, что дает getIcon()? это должен быть URI значка, означающий «sap-icon: //…» может быть, вам нужно вызвать toString или что-то еще