2015-09-19 3 views
0

Я новичок в разработке SAPUI5 и попытался создать страницу со стандартными плитами внутри контейнера для плитки. Я создал data.json файл, который содержит следующую информацию:Стандартные плитки с привязкой данных

{ 
    "TileCollection" : [ 
    { 
     "icon" : "edit", 
     "type" : "Monitor", 
     "press": "onEditClick", 
     "title" : "Global MasterData Characteristics Maintenance Tool" 
    }, 
    { 
     "icon" : "activity-assigned-to-goal", 
     "type" : "Monitor", 
     "press": "onAssignClick", 
     "title" : "Global MasterData Characteristics Assignment Tool" 
    },  
    { 
     "icon" : "map", 
     "type" : "Monitor", 
     "press": "onMappingClick",  
     "title" : "Global MasterData Characteristics Mapping Tool" 
    }  
    ] 
} 

внутри моего точки зрения XML, то я использую ниже код, когда я заменяю ниже динамический элемент из {} нажмите, чтобы, например, onEditClick тогда событие работает, но с динамическим содержимым ничего не происходит, когда я нажимаю плитку. Надеюсь, кто-то может помочь в правильном направлении?

<TileContainer id="container" tileDelete="handleTileDelete" tiles="{/TileCollection}"> 
       <StandardTile 
        icon = "sap-icon://{icon}"  
        type = "Monitor" 
        press = "{press}" 
        title = "{title}" /> 
      </TileContainer> 

Просто, чтобы быть уверенным, значок и название загружаются корректно во время выполнения так загружен файл JSON и используется только в прессе свойство, кажется, не применяется.

С наилучшими пожеланиями, Нико ван дер Линден

ответ

0

Привет Нико ван дер Линден,

U необходимо изменить привязку для пресс-конференции.

код должен быть что-то вроде этого:

<TileContainer id="container" tileDelete="handleTileDelete" tiles="{/TileCollection}"> 
      <StandardTile 
       icon = "sap-icon://{icon}"  
       type = "Monitor" 
       press = "FunctionPress" 
       title = "{title}" /> 
     </TileContainer> 

Надеется, что это помогает.

+0

Извините за поздний ответ, но спасибо за вашу реакцию. Если я делаю так, это действительно работает, но затем все плитки запускают тот же метод. Что будет в порядке, если есть способ получить идентификатор или что-то вроде щелкнутой плитки? Есть ли способ сделать это? –

0

Я, наконец, решил :-) На самом деле кажется, что вы не можете связать событие с прессой. Итак, что я теперь сделал, это создать параметр id-tile в json-файле, который имеет значение представлений, которые являются частью приложения. Таким образом, файл в формате JSON выглядит следующим образом:

{ 
    "TileCollection" : [ 
    { 
     "id-tile": "maintenance", 
     "icon" : "edit", 
     "type" : "Monitor", 
     "info" : "Central", 
     "title" : "Global MDM" 
    }, 
    { 
     "id-tile": "assignment", 
     "icon" : "activity-assigned-to-goal", 
     "type" : "Monitor", 
     "info" : "Local", 
     "title" : "Product and Customer Mapping " 
    } 
} 

Тогда в представлении я использую стандартную плитку следующим образом:

> <StandardTile 
>    icon="sap-icon://{tiles>icon}" 
>    type="{tiles>type}" 
>    number="{tiles>number}" 
>    numberUnit="{tiles>numberUnit}" 
>    press="handleTilepress" 
>    title="{tiles>title}" 
>    info="{tiles>info}" 
>    infoState="{tiles>infoState}" /> 

Таким образом, это означает, что каждая плитка на странице запускает то же событие в файле контроллера , Итак, наконец, в контроллере я использую «id-tile» из bindingContext, чтобы увидеть, на какой щелчок был выбран, и значение параметра затем назначается команде «navTo» для выполнения фактической маршрутизации.

handleTilepress: function(oEvent) { 
      var selectedPage = oEvent.getSource().getBindingContext("tiles").getProperty("id-tile"); 
      var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
      oRouter.navTo(selectedPage); 
} 

Благодарим всех за ответ! Я очень новой для SAPUI5 развития, и я не знаю, если это лучший способ сделать это, но это, кажется, работает хорошо для меня :-)

С уважением, Нико

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