2015-03-26 2 views
0

В основном, я скопировал каждую вещь из демонстрационного приложения sap, https://sapui5.hana.ondemand.com/sdk/test-resources/sap/m/demokit/tdg/index.html?responderOn=true , что я пытаюсь сделать, это: на главной странице, я добавил кнопку, чтобы вызвать навигацию. Я добавил новую страницу, когда эта кнопка нажата, новый вид должен отображаться на странице подробностей. enter image description here проблема: Когда кнопка нажата, вызывается мой обработчик событий, который вызовет навигацию. в обработчике событий handepatternmatched я получил название маршрута «продукт». но он должен быть «detail1». в моем коде это похоже на navTo ("detail1"), что здесь не так? конечно, мое подробное описание1 не отображается на странице подробностей.sap ui5 routing не работает

routing : { 
     config : { 
      routerClass : com.pdh.MyRouter, 
      viewType : "XML", 
      viewPath : "com.pdh.view", 
      targetAggregation : "detailPages", 
      clearTarget : false 
     }, 
     routes : [ 
      { 
       pattern : "", 
       name : "main", 
       view : "Master", 
       targetAggregation : "masterPages", 
       targetControl : "idAppControl", 
       subroutes : [ 
        { 
         pattern : "{product}/:tab:", 
         name : "product", 
         view : "Detail" 
        } 
       ] 
      },{ 
       pattern : "detail1", 
       name : "detail1", 
       view : "Detail1", 
       targetAggregation : "detailPages", 
       targetControl : "idAppControl" 

      }, 
      { 
       name : "catchallMaster", 
       view : "Master", 
       targetAggregation : "masterPages", 
       targetControl : "idAppControl", 
       subroutes : [ 
        { 
         pattern : ":all*:", 
         name : "catchallDetail", 
         view : "NotFound", 
         transition : "show" 
        } 
       ] 
      } 
     ] 
    } 

мастер вид где кнопка добавляется

<mvc:View controllerName="com.pdh.view.Master" 
displayBlock="true" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"> 
<Page id="page" title="{i18n>masterTitle}"> 

    <subHeader> 

     <Bar id="searchBar"> 

      <contentMiddle> 


       <!-- <SearchField id="searchField" showRefreshButton="{device>/isNoTouch}" 
        search="onSearch" tooltip="{i18n>masterSearchTooltip}" width="100%"> </SearchField> --> 

      </contentMiddle> 
     </Bar> 
    </subHeader> 
    <content> 
    <Button xmlns="sap.m" busy="false" busyIndicatorDelay="1000" 
        visible="true" text="Jun" type="Default" width="" enabled="true" 
        icon="" iconFirst="true" activeIcon="" iconDensityAware="true" 
        ariaDescribedBy="" ariaLabelledBy="" tap="" press="junNav"> 
        <tooltip></tooltip> <!-- sap.ui.core.TooltipBase --> 
        <dependents></dependents> <!-- sap.ui.core.Control, since 1.19 --> 
       </Button> 
     <!-- <List id="list" items="{/}" mode="{device>/listMode}" 
      noDataText="{i18n>masterListNoDataText}" select="onSelect" growing="true" 
      growingScrollToLoad="true"> 
      <items> 
       <ObjectListItem type="{device>/listItemType}" press="onSelect" 
        title="{product_cd}"> 
       </ObjectListItem> 
      </items> 
     </List> --> 
    </content> 
    <footer> 
     <Bar> 
      <contentRight> 
       <Button icon="sap-icon://add" tooltip="{i18n>masterFooterAddButtonTooltip}" 
        press="onAddProduct" /> 
      </contentRight> 
     </Bar> 
    </footer> 
</Page> 

обработчик событий в контроллере

junNav : function() { 
    // This is only relevant when running on phone devices 
    console.log("junNav"); 
    this.getRouter().navTo("detail1",null,true); 
}, 

обработчик события для события routepatternmatched

onRouteMatched : function(oEvent) { 
    var sName = oEvent.getParameter("name"); 
    console.log("master controller onRouteMatched "+sName); 
    if (sName !== "main") { 
     return; 
    } 

    //Load the detail view in desktop 
    this.getRouter().myNavToWithoutHash({ 
     currentView : this.getView(), 
     targetViewName : "com.pdh.view.Detail", 
     targetViewType : "XML" 
    }); 

    //Wait for the list to be loaded once 
    this.waitForInitialListLoading(function() { 

     //On the empty hash select the first item 
     this.selectFirstItem(); 

    }); 

}, 

ответ

1

, когда вы используете маршрутизацию, порядок маршрутов важен. Только первый маршрут, соответствующий шаблону, вызовет событие. Yout маршрут продукт имеет рисунок, который соответствует detail1 поскольку {продукт} /: Вкладка: приведет к деталям/(без вкладки)

если изменить этот шаблон к/{продукт} продукты: вкладки detail1 не будет матч больше только Продукты/detail1 будут соответствовать.

С уважением, Tobias

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