2015-12-02 2 views
0

У меня есть ошибка при передаче параметров с контроллера вида на другой контроллер представления. Идентификатор переменной undefined.Ошибка маршрутизатора SAPUI5

контроллер Recive

var oParameters = oEvent.getParameters(); 

alert(oParameters.arguments.id); 
alert(oParameters.arguments.entity); 

контроллер Pass

var bReplace = jQuery.device.is.phone ? false : true; 
    var context = { 
     entity: "EmployeeCollection", 
     id: "1" 
    }; 
    this.getRouter().myNavBack("detail", context, bReplace); 

Параметр объект работает.

Спасибо.

+0

от того, что вы опубликовали, кажется, не проблема. можете ли вы опубликовать фрагмент рабочего кода? – Breakpoint

+0

Вы уверены, что контекстные данные переданы параметрами событий? Попытайтесь проверить oEvent-Data, установив отладчик; -Statement в Eventhandler-Function –

ответ

0

Прежде всего я предлагаю вам использовать открытый API, чтобы получить аргументы, потому что таким образом вы безопасны в случае, если некоторые UI5 внутренние изменения (только в случае, если вы не делаете это так):

var oArgs = oEvent.getParameter("arguments"); 

Помимо этого, не могли бы вы разместить конфигурацию маршрутизации? Меня интересует соответствующий шаблон маршрута. В вашем случае вы можете получить доступ только к «сущности», если это часть шаблона вашего маршрута, и в вашем случае это должно быть mandatory parameter. В этом случае вы бы получить доступ к нему, как это:

var sEntity = oEvent.getParameter("arguments").entity; 

Если «объект» должен быть параметр запроса, то ваш код будет выглядеть несколько иначе:

var bReplace = jQuery.device.is.phone ? false : true; 
var context = { 
    id: "1", 
    query : { 
     entity: "EmployeeCollection", 
    } 
}; 
this.getRouter().myNavBack("detail", context, bReplace); 

И это, как вы бы получить параметр запроса в вашем (как вы его называете) «прием» контроллер:

var oArgs = oEvent.getParameter("arguments"); 
var oQuery = oArgs["?query"]; 
var sEntity = oQuery.entity; 

Я думаю, что более подробно проверить на официальном Navigation & Routing Tutorial - Step 9.

Также имейте в виду, что вы не разместили код собственной функции myNavBack(). Может быть, там что-то не так, но никто не знает, если вы не разместите код ;-)

+0

Привет, спасибо за ваш ответ. –

+0

Спасибо за ваш ответ.Мой компонент конфигурации: \t \t \t маршруты: [{ \t \t \t \t картина: "", \t \t \t \t название: "главный", \t \t \t \t вид: "Мастер", \t \t \t \t targetAggregation : «masterPages», \t \t \t \t targetControl: "idAppControl", \t \t \t \t subroutes: [ \t \t \t \t \t { \t \t \t \t \t схеме: "EmployeeCollection {объект}", \t \t \t \t \t название: "деталь", \t \t \t \t \t вид: «Деталь», \t \t \t \t \t перехода: "слайд" \t \t \t \t}, \t \t \t \t { \t \t \t \t \t схеме: "PlaceCollection {объект}", \t \t \t \t \t название: "stationDetail", \t \t \t \t \t вид: "StationDetail", \t \t \t \t \t перехода: "слайд" \t \t \t \t}, \t \t \t \t { \t \t \t \t \t схеме: "VehicleCollection {объект}", \t \t \t \t \t Название: "trainDetail" , \t \t \t \t \t вид: "TrainDetail", \t \t \t \t \t переход: "слайд" \t \t \t \t}] –

+0

Упс, кажется, вы используете "старый" и своего рода "устаревшее" конфигурацию маршрутизации! Какую версию UI5 вы используете? Является ли ваше приложение новым приложением или некоторым «старым» приложением, которое вам нужно поддерживать? Во всяком случае, ... Учебное пособие по навигации и маршрутизации описывает новейшие API и новую и определенно предпочтительную конфигурацию маршрутизации, включая цели. Вы используете «старый способ» (т. Е. Подпрограммы не используются в «новой» маршрутизации ...). Я предлагаю вам мигрировать.Но сначала прочтите руководство :-) Другой вопрос: не могли бы вы привести пример того, как может выглядеть хэш для шаблона «EmployeeCollection {entity}»? – Nabi

Смежные вопросы