2016-04-06 3 views
-1

Я пытаюсь связать данные со списком, но не понимаю. Я вижу модель (modelData), и данные находятся в модели.SAPUI5 Combobox JSONModel

Может ли кто-нибудь сказать мне, если структура внутри результата (EX_LABOR) правильная?

  <ComboBox 
      items="{modelData}" 
      selectedItem="selectedItem" 
      selectedKey="keySelectedKey" 
      selectedItemId="idselectedItemId" 
      id="idComboboxLabor" 
      placeholder="Datum" 
      textAlign="Initial" 
      textDirection="Inherit" 
      maxWidth="100%" 
      change="onChangeLaborDatum" 
      selectionChange="onSelectionChangeLaborDatum"> 
       <items> 
        <core:Item key="{modelData>PatientID}" text="{modelData>/PatientID}"/> 
       </items> 
      </ComboBox> 

Я положил запрос ajax в функцию init.

Контроллер: jQuery.ajax ({ URL: aUrl, метод: 'GET', DATATYPE: 'JSON', CONTENTTYPE: "применение/JSON", успех: функция (данные, textStatus, jqXHR) {

   // create JSON model instance 
       var oModelCombobox = new sap.ui.model.json.JSONModel(); 

       /* // set the data for the model 
        Result: 
        {"EX_LABOR":{"0":{"PatientID":3161,"Datum":"2014-12-08T23:00:00.000Z"},"1":{ */ 
       oModelCombobox.setData(data); 

       // set the model to the core 
       sap.ui.getCore().setModel(oModelCombobox, "modelData"); 
       var aData = oModelCombobox.getProperty("/EX_LABOR"); 

       var oModel1 = new sap.ui.model.json.JSONModel(); 
      //  oModel1.attachRequestCompleted(function() { 
        oModel1.setData({ 
         modelData: aData 
        }); 
        console.error(oModel1); 
        console.error(aData); 
      // }); 

      } 

Result

Было бы очень полезно, если один из вас может мне помочь.

ответ

1

Вы должны исправить связывание агрегации ComboBox пунктов:

items="{modelData>/EX_LABOR} 

Также EX_LABOR должен быть массивом.

Кроме того, вы должны исправить связывание товара текстового свойства (как уже упоминались @Qualiture):

text="{modelData>PatientID}" 

В общем, вы должны пересмотреть свое именование: «modelData» плохое имя, как это не ясно, что ваша модель содержит данные, но неясно, какие данные. Кроме того, рекомендуется использовать:

this.getView().setModel(model, name) 

вместо хранения в ядре.

+0

Пробовал, не работает. \t \t \t \t \t \t <ядро: Ключ элемента = "{PatientID}" текст = "{/ PatientID}" /> \t \t \t \t \t user2405095

+0

Пытались, но не работает: \t \t \t \t товар = "{modelData>/modelData}" \t \t \t \t SelectedItem = "SelectedItem" \t \t \t \t selectedKey = "KeySelectedKey" \t \t \t \t selectedItemId = "idselectedItemId" \t \t \t \t ID = "idComboboxLabor" \t \t \t \t заполнитель = "Датум" \t \t \t \t TextAlign = "Начальный" \t \t \t \t textDirection = "Наследование" \t \t \t \t MaxWidth = "100%" \t \t \t \t изменение = "onChangeLaborDatum" \t \t \t \t SelectionChange = "onSelectionChangeLaborDatum"> \t \t \t \t \t \t \t \t \t \t \t <ядро: клавиша Item = "{modelData > PatientID} "text =" {modelData>/PatientID} "/> \t \t \t \t \t \t \t \t \t – user2405095

+0

Он должен быть EX_LABOR, который также должен быть массивом. – matbtt

0

хорошо, я понял. Проблема заключалась в том, что я использовал sap.ui.getCore(). SetModel (... вместо this.getView(). SetModel (model, name). Я использовал его только потому, что у меня был неперехваченный типerror. используйте this.getView (.. до того, как я сделаю запрос ajax, и я больше не получаю typeerror, и он отлично работает.

И действительно, спасибо за ваш полезный и быстрый ответ !!! Вы дали мне правильные подсказки !

+1

Если бы это помогло, очень важно отметить ответ как правильный. – matbtt

+0

@matbtt Я бы, но не знаю где – user2405095

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