2017-05-31 199 views
0

我有一個關於在SAPUI5路由的問題。我有一個擁有兩個主視圖的SplitApp容器。第一個主視圖顯示設備列表。第二個主視圖顯示所選設備的測量點列表。該數據是(現在)位於客戶方JSON模式至極看起來是這樣的:嵌套路由SAPUI5

{ 
"Equipments": [ 
    { 
     "EquipmentNr": "Equipment 0000000001", 
     "Messpunkte": [ 
       { 
        "MesspunktNr": "Messpunkt 01" 
       }, 
       { 
        "MesspunktNr": "Messpunkt 02" 
       }, 
       { 
        "MesspunktNr": "Messpunkt 03" 
       } 
      ] 
    }, 

詳細信息頁面現在應該能夠訪問「Messpunkt」第二馬西德威選擇,但我不能夠通過通過路由參數。 路由到詳細查看路由配置:

  "routes": [... 
      { 
      "pattern": "master/{equiPath}/detail/{impttPath}", 
      "name": "detail", 
      "target": "detail" 
      } 
     ], 
     "targets": { 
      ... 
      "detail": { 
       "viewName": "DetailPage", 
       "controlAggregation": "detailPages", 
       "parent": "master" 
      } 
     } 

我不知道如何調用masterpage2的控制器navTo方法,因爲當我嘗試它總是給我一個錯誤說「的片段{equiPath } 是必須的。」

onNavToDetail : function(oEvent) { 
 
\t \t \t var oItem = oEvent.getSource(); 
 
\t \t \t var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
 
\t \t \t oRouter.navTo("detail", { 
 
\t \t \t \t equiPath: oItem.getBindingContext("equi").getPath().substr(0) 
 
\t \t \t });

我得到的整個路徑例如:調用在這種形式的onNavToDetail方法時

「/設備/ 0/Messpunkte/0」段「{} equiPath

文檔中的信息‘與嵌套組件工作’真的不幫我。 感謝曾經幫助。 最良好的祝願

+0

我改變了「路線」和路由配置的「目標」部分。 的「路線」部分現在包含「圖案」:「細節/ {impttPath}」和「親本」:「主站」。 「目標」部分現在只包含模式的viewName和controlAggregation。 這樣做後,我可以通過URL調用應用程序與模式,例如/ master/0/detail/0,它的工作原理。這個錯誤必須在onNavToDetail函數中,但是我不知道如何解決這個問題。 – Bendit

回答

0

我現在已經在SCN有可能解決這個問題想通問題出在哪裏,用一點幫助我的所有路由配置的 首先是錯了,它必須看起來象:

"routes": [ 
      { 
      "pattern": "", 
      "name": "home", 
      "target": "home" 
      }, 
      { 
      "pattern": "master/{equiPath}", 
      "name": "master", 
      "target": "master" 
      }, 
      { 
      "pattern": "/master/{equiPath}/detail/{impttPath}", 
      "name": "detail", 
      "target": ["detail", "master"] 
      } 
     ], 
     "targets": { 
      "home": { 
       "viewName": "MasterPage", 
       "viewLevel": 1, 
       "controlAggregation": "masterPages" 
      }, 
      "master": { 
       "viewName": "MasterPage2", 
       "viewLevel": 2, 
       "controlAggregation": "masterPages" 
      }, 
      "detail": { 
       "viewName": "DetailPage", 
       "viewLevel": 3, 
       "controlAggregation": "detailPages" 
      } 
     } 

然後我打電話帶有onNavToDetail函數的路由器,並在regu的幫助下傳遞參數lar表達式。 這是我使用的代碼:

onNavToDetail : function(oEvent) { 
     var oItem = oEvent.getSource(); 
     var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 

     var sPath = oItem.getBindingContext("equi").getPath(); 
     console.log(sPath); 
     var regExpSpath = /([0-999])/g; 
     var result = sPath.match(regExpSpath); 
     console.log(result[0]); 
     console.log(result[1]); 

     oRouter.navTo("detail", { 
      equiPath: result[0], 
      impttPath: result[1] 
     }); 
    }