#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 или что-то еще