Маршрутизация с несколькими фильтрами в SAPUI5

#sapui5

#sapui5

Вопрос:

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

Таким образом, в основном у меня есть первое представление с несколькими полями ввода, по которым должен быть отфильтрован набор данных. Во втором представлении показаны результаты.

Прочитав документацию и выполнив некоторую отладку, я пришел к следующему решению:

Сначала я настроил маршрут с путем и необязательным параметром запроса.

 {  "name": "SearchResults",  "pattern": "SearchResults/{searchResultsPath}:?query:",  "target": [  "TargetSearchResults"  ] }  

В моем контроллере представления поиска у меня есть переменная $filter , содержащая фильтры в виде строки:

"FirstName EQ John and LastName EQ Doe" .

В методе навигации я добавил "?query" свойство и $filter в качестве объекта.

 this.navTo("SearchResults", {  searchResultsPath: window.encodeURIComponent("/DataSet"),  "?query": {$filter} });  

В моем контроллере результатов поиска второго представления я мог бы получить доступ к строке фильтра, просто обратившись к $filter объекту из события.

 oEvent.getParameter("arguments")["?query"].$filter  

Анализ строки фильтра был тривиальным, и я мог бы заполнить свойство filters, связав агрегацию таблицы. URL-адрес также был правильным, так как там были мои фильтры.

Однако это, по-видимому, не самый простой способ сделать.

Есть ли лучший способ сделать это? Я упускаю что-то очевидное?

Заранее спасибо.

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

1. Я бы добавил объекты фильтра (реальные фильтры, а не строку) в глобальную модель JSON. Затем во втором представлении вы можете просто получить доступ к объектам фильтра, и вам не придется настраивать сложные маршруты и странный синтаксический анализ строк.