2015-01-08 41 views
2

我想在啓動板中的應用程序之間導航。我發現有很多搜索,通過CrossApplicationNavigation在ushell中就是這樣。這裏是鏈接到文檔(SAPUI5 SDK - 演示工具包)Fiori - 跨應用程序導航

啓動板中的每個應用程序都有'語義對象'和'動作'用於進一步導航。

我遵循文檔並編寫了以下代碼段來創建CrossApplicaionNavigation服務。

var fgetService =sap.ushell && sap.ushell.Container && sap.ushell.Container.getService; 
this.oCrossAppNavigator = fgetService && fgetService("CrossApplicationNavigation"); 

只是爲了確保oCrossAppNavigator服務正常啓動,請寫下面的代碼。因此,瞭解服務的工作原理,我編寫了以下代碼導航到「SalesOrder」應用程序和「創建」操作。

this.oCrossAppNavigator.toExternal({ 
    target : { semanticObject : "SalesOrder",action : "create" } 
}); 

這是我的問題。上述聲明既不會傳遞到SalesOrder應用程序,也不會在控制檯中輸出任何錯誤。 它應該用上面的哈希代碼更新URL並轉到該應用程序。

注意:手動更改URL以上述哈希碼正確地轉到SalesOrder應用程序。

由於提前,

vagley

回答

0

你們是不是要在本地運行呢?因爲如果這樣的話,就不能按預期,工作,除非這兩個應用程序(在這裏您已經添加了跨應用程序代碼的「SalesOrder創建」應用程序應用程序)中的「local sandbox

正在運行

但是,如果您嘗試在SAP Dev /測試系統上的Fiori Launchpad中安裝的應用程序中運行這段代碼,其中也有在相同的啓動板中具有「SalesOrder-create」應用程序,那麼它應該工作很好。

還可以使用下面的方法來檢查是否跨應用程序服務的工作,因爲它看起來像你的代碼總是輸出#SalesOrder-create

if (sap.ushell && sap.ushell.Container && sap.ushell.Container.getService) 
{ 
    var oCrossAppNavigator = sap.ushell.Container.getService("CrossApplicationNavigation"); 

    oCrossAppNavigator.toExternal({ 
         target: { semanticObject : "SalesOrder", action: "create" }, //the app you're navigating to 
         // params : { param1:data, param2:data} 
        }); 
    } 
else 
{ 
    jQuery.sap.log.info("Cannot Navigate - Application Running Standalone"); 
} 
} 
+0

我不是在本地運行,這兩個應用程序在同一啓動板配置。我遵循你的方式,既不在控制檯中打印任何內容,也不導航到需要的應用程序期待你的回覆。 – Vagley

+0

有趣。現在很難猜測爲什麼會發生這種情況,如果沒有響應。您可以嘗試一件事,您是否可以在'SalesOrder'應用程序中使用導航代碼,並嘗試通過提供正確的'semanticObject'和'action'來導航您正嘗試使用的應用程序。沒有解決您的問題,但是如果它有效,那麼您可以確認至少導航正在工作 – Breakpoint