У меня странная проблема UI5. Я создаю строку из обязательного контекста элемента управления, который выглядит как:«%» получает URI-декодирование, а все остальные не
Entity('Element%3AInfo%2CID')
Просто для информации, это выглядит следующим образом декодируется: Entity('Element:Info,ID')
Однако, я получаю эту строку из метода следующей цепочки:
oItem.getBindingContext().getPath().substr(1)
Таким образом, весь (довольно основной) "перейти к" блок выглядит следующим образом:
showElement : function (oItem) {
'use strict';
var bReplace = jQuery.device.is.phone ? false : true;
sap.ui.core.UIComponent.getRouterFor(this).navTo("element", {
from: "master",
element: oItem.getBindingContext().getPath().substr(1),
otherpattern: "something"
}, bReplace);
},
Консольный журнал в этом блоке console.log(oItem.getBindingContext().getPath().substr(1));
содержит нужную строку.
Консоль выход console.log (. OItem.getBindingContext() GetPath() зиЬзЬг (1).): сущностей ('Элемент% 3AInfo% 2CID')
Проблема состоит в том (быть в курсе, что это становится любопытно), что мой URL картины "{element}
" заполняется:
Entity('Element%253AInfo%252CID')
декодируется: Entity('Element%3AInfo%2CID')
As вы, вероятно, уже знаете, кодируется шаблон «%». Я не понимаю, почему UI5 сделает это.
Вы также должны знать эти факты, которые я тестировал:
decodeURIComponent(oItem.getBindingContext().getPath().substr(1))
приводит к "Entity('Element:Info,ID')
"encodeURIComponent(oItem.getBindingContext().getPath().substr(1))
приводит к "Entity('Element%25253AInfo%25252CID')
"oItem.getBindingContext().getPath().substr(1).replace("%3A", ":")
приводит к "Entity('Element:Info%252CID')
"
Это ошибка? Я имею в виду, что шаблон URI остается нетронутым до тех пор, пока он не достигнет «%». По какой-то странной причине этот специальный символ закодирован, а все остальное не имеет значения.
Моя интуиция заключается в том, что для библиотеки требуется декодированная строка. – royhowie
@royhowie Полностью декодированная строка (см. Первый элемент списка) не подходит, потому что мне нужна строка, подобная этой Entity («Элемент% 3AInfo% 2CID») – OddDev