2017-01-31 2 views
0

Я использую SAPUI5, у меня есть MasterPage и DetailPage, в MasterPage у меня есть Список, и когда я выбираю элемент в списке, информация отображается в DetailPage.Как получить данные вида

В разделе DetailPage у меня есть PositiveAction. Когда я нажимаю PositiveAction, мне нужно получить данные DetailPage, но я не знаю, как это сделать.

Мой код пункта Нажмите

onPoSelect : function(oEvent) { 
     var oListItem = oEvent.getParameter('listItem'); 
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
     oRouter.navTo("DetailPanel", { 
      invoicePath: oListItem.getBindingContext("solped").getPath().substr(1) 
     }); 

    }, 

Мой код в DetailPanel

onInit: function(){ 
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
     oRouter.getRoute("DetailPanel").attachPatternMatched(this._onObjectMatched, this); 
    }, 
    _onObjectMatched: function (oEvent) { 
     this.getView().bindElement({ 
      path: "/" + oEvent.getParameter("arguments").invoicePath, 
      model: "solped" 
     }); 
    }, 

Линия "oEvent.getParameter (" аргументы "). InvoicePath,"

возвращает это.

Счета-фактуры (CustomerName = 'Alfreds Futterkiste', Discount = 0f, OrderID = 10702, ProductID = 3, ProductName = 'Aniseed Syrup', Quantity = 6, Sales = 'Margaret Peacock', ShipperName = 'Speedy Express' UnitPrice = 10.0000M)

У меня есть информация, но это строка, как я могу преобразовать эту строку в объект? Или, как еще я могу получить доступ к информации в представлении?

Изображение Вид

enter image description here

ответ

0

Я предполагаю, что вы уже можете увидеть данные детали в вашем Детальный вид. Вы привязали данные к представлению функцией bindElement и возвращали их обратно в код, который вы ищете для функции «getBindingContext».

Создать следующую функцию в контроллере Detail:

// this must be connected to Button -> <Button press="onPositivePress"> 
onPositivePress: function(oEvent) { 

var oBindingContext = this.getView().getBindingContext("solped"); 

// this is the path you can use to call odata service 
var sPath = oBindingContext.getPath(); 

// this is data you are looking for 
var oReqData = oBindingContext.getObject(); 

} 
+0

Спасибо Амиго, оно работает, Спасибо за ваш ответ. –

0

для преобразования строки в объект см ниже пример.

var a = "how r u";

var b = [a];

вы получите объект a в b.

0

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

var oModel = this.getView().getModel("solped"); 
var oProps = oModel.getProperty(oListItem.getBindingContext("solped").getPath()); 

Вы можете получить доступ к этим свойствам, как

oProps.CustomerName; 
oProps.OrderID; 
... 
Смежные вопросы