2016-01-12 2 views
1

У меня есть SAPUI5 splitapp с подробной страницей. Эта подробная страница содержит список с ObjectListItem s. Я хочу прослушать нажатие/выбор этого элемента, но мне всегда приходится дважды нажимать на элемент, иначе событие не запускается.Событие запускается только при двойном щелчке элемента из sap.m.List

Кто-нибудь знает, в чем причина?

Спасибо и наилучшими пожеланиями

Detail XML

<Page 
    id="myJobsPage" 
    title="{i18n>myJobsTitle}"> 

    <List 
     id="myJobsMasterList" 
     inset="false" 
     items="{testkunden}"> 

      <ObjectListItem 
       id="myJobsListItem" 
       visible="true" 
       title="{job}" 
       number="{offen}" 
       numberUnit="Euro" 
       press="onMyJobsListItem" 
       type="Active"> 

       <!-- visible part --> 
       <ObjectAttribute 
       id="Gpart123" 
       text="Partner: {gpart}" 
       visible="true" /> 

       <ObjectAttribute 
        id="Anrede123" 
        text="{anrede}" 
        visible="true" /> 

       <ObjectAttribute 
        id="Name123" 
        text="{vorname} {nachname}" 
        visible="true" /> 

       <ObjectAttribute 
        id="Strasse123" 
        text="{strasse} {hausnr}" 
        visible="true" /> 

      </ObjectListItem> 

     <!-- <ObjectStatus text="{i18n>myJobsObjectStatus}" /> -->   
    </List> 
</Page> 

</mvc:View> 

Контроллер

onMyJobsListItem: function(event){ 
 
\t \t \t console.log("only triggers if click twice"); 
 
    
 
};

UPDATE: Splitapp Root Просмотр

  <mvc:View 
       controllerName="mobile.splitapp.controller.App" 
       displayBlock="true" 
       xmlns:mvc="sap.ui.core.mvc" 
       xmlns="sap.m" > 

       <App id="app"> 

        <SplitApp id="splitapp" > 
         <masterPages> 
          <mvc:XMLView viewName="mobile.splitapp.view.Master" id="master1" /> 
         </masterPages> 

         <detailPages> 
          <mvc:XMLView viewName="mobile.splitapp.view.MyJobs" id="myJobsPage" /> 
          <mvc:XMLView viewName="mobile.splitapp.view.DisconnectionOrder" id="disconnectionOrderPage" /> 
         </detailPages> 
        </SplitApp> 

       </App> 

      </mvc:View> 

ответ

0

Вот бегущий пример кода (см снизу jsbin и updated jsbin), и она работает просто отлично! Поскольку вы не опубликовали свой «окружающий» код, я не могу сказать, что случилось. Но, как вы можете видеть в приведенном ниже примере, событие запускается сразу после первого нажатия ...

Cann вы видите разницу с кодом?

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <meta charset="utf-8" /> 
 
     <title>SAPUI5 single file template | nabisoft</title> 
 
     <script src="https://openui5beta.hana.ondemand.com/resources/sap-ui-core.js" 
 
      id="sap-ui-bootstrap" 
 
      data-sap-ui-theme="sap_bluecrystal" 
 
      data-sap-ui-libs="sap.m" 
 
      data-sap-ui-bindingSyntax="complex" 
 
      data-sap-ui-compatVersion="edge" 
 
      data-sap-ui-preload="async"></script> 
 
      <!-- use "sync" or change the code below if you have issues --> 
 
    
 
     <!-- XMLView --> 
 
     <script id="myXmlView" type="ui5/xmlview"> 
 
      <mvc:View 
 
       controllerName="MyController" 
 
       xmlns="sap.m" 
 
       xmlns:core="sap.ui.core" 
 
       xmlns:mvc="sap.ui.core.mvc"> 
 
      
 
       <App> 
 
       <SplitApp> 
 
        
 
        <masterPages> 
 
        <Page 
 
         id="myJobsPage" 
 
         title="Master Page"> 
 

 
         <List 
 
          id="myJobsMasterList" 
 
          inset="false" 
 
          items="{/Customers}"> 
 

 
           <ObjectListItem 
 
            id="myJobsListItem" 
 
            visible="true" 
 
            title="{CompanyName}" 
 
            number="{offen}" 
 
            numberUnit="Euro" 
 
            press="onMyJobsListItem" 
 
            type="Active"/> 
 
           
 
         </List> 
 
        </Page> 
 
        </masterPages> 
 
        
 
        <detailPages> 
 
        <Page 
 
         title="Detail Page"> 
 

 
         <List 
 
          inset="false" 
 
          items="{/Customers}"> 
 

 
           <ObjectListItem 
 
            visible="true" 
 
            title="{CompanyName}" 
 
            number="{offen}" 
 
            numberUnit="Euro" 
 
            press="onMyJobsListItem" 
 
            type="Active"/> 
 
           
 
         </List> 
 
        </Page> 
 
        </detailPages> 
 
        
 
       </SplitApp> 
 
       </App> 
 
    
 
      </mvc:View> 
 
     </script> 
 

 
     <script> 
 
      sap.ui.getCore().attachInit(function() { 
 
       "use strict"; 
 
    
 
       //### Controller ### 
 
       sap.ui.controller("MyController", { 
 
        onInit : function() { 
 
    
 
         this.getView().setModel(
 
          new sap.ui.model.odata.v2.ODataModel("https://cors-anywhere.herokuapp.com/services.odata.org/V2/Northwind/Northwind.svc/", { 
 
           json : true, 
 
           useBatch : false 
 
          }) 
 
         ); 
 
        }, 
 
        
 
        onMyJobsListItem: function(event){ 
 
         alert("press"); 
 
        } 
 
        
 
       }); 
 
    
 
       //### THE APP: place the XMLView somewhere into DOM ### 
 
       sap.ui.xmlview({ 
 
        viewContent : jQuery("#myXmlView").html() 
 
       }).placeAt("content"); 
 
    
 
      }); 
 
     </script> 
 
    
 
    </head> 
 
    
 
    <body class="sapUiBody"> 
 
     <div id="content"></div> 
 
    </body> 
 
</html>

+0

Привет, я не вижу разницы и нет никакого эффекта с этим кодом. Может быть, у меня проблема с splapp? Я отправлю другой код. – iach

+0

Что значит отсутствие эффекта (обязательно запустите jsbin ссылку)? Если вы нажмете какой-либо элемент списка, вы увидите окно предупреждения, верно? Я также обновил код ... – Nabi