2016-07-25 61 views
0

我是SAPUI5環境和JavaScript的新手。 我使用主詳細信息模板,從而在供應商顯示的主頁面上和詳細信息頁面上顯示他們生產的產品。我的目標是在母版頁上顯示每個供應商名稱後面的產品數量。 該產品和供應商是2實體,並有一個協會。 我的詳細控制器中有一個函數,它可以計算表長度並顯示詳細信息頁面上的變量。 我如何在我的母版頁中得到這個變量?如何將變量從細節傳遞給母版頁SAPUI5

我試着用OData操作,沒有工作導致兩個實體之間的依賴關係。

我試着用事件總線來訪問從主控制器到細節控制器的計數功能。觸發事件時發生問題。

我試圖顯示我的函數作爲一個對象,並有一個訪問的變量的問題。

有人對我的問題有一個聰明的解決方案嗎? :)

問候 菲利克斯

+0

爲什麼不把計數作爲屬性添加到供應商實體? – slkorolev

回答

1

做到這一點最簡單的方法是讓OData服務做繁重的你。您應該向包含產品數量的供應商實體添加一個附加屬性。

上面介紹的方法,即將細節頁面計數從主頁面轉移到主頁面並不真實,因爲詳細信息頁面只顯示一個供應商的產品。在你的問題中,你表示你想顯示所有供應商的數量。這將要求您爲列表中的所有供應商運行詳細信息頁面中的邏輯。

如果每個供應商的產品數量不是很高,那麼您也可以考慮使用/Suppliers?$expand=Products擴大每個供應商的產品,並添加一些邏輯來計算每個供應商在收到數據時的產品(例如,使用change事件在運行時設定bindElement)。如果每個供應商擁有大量產品,這將會非常緩慢,因爲每個供應商的所有產品都會被檢索並下載和計數。

另一個緩慢的方法是對列表中的每個供應商啓動一個$ count查詢到OData服務。儘管這會對前端造成較小的壓力,但這可能會導致運行OData服務的後端產生更大的壓力。

在你的情況下,計數選擇不太可能是一個可行的選擇。因此,如果我是你,我會嘗試擴展OData服務。

+0

不幸的是,我無法訪問OData服務,因爲它是一個SAP測試服務。也許我沒有正確地提出我的問題:/。當然無法用我的細節控制器來統計我的產品清單。但後來我在我的詳細控制器/視圖中有這個變量本地,但我需要在我的主控制器中的變量,以便顯示在我的母版頁上。 –

+0

您確實正確地提出了您的問題,答案也提到了這一點,並解釋了爲什麼讓您在詳細信息頁面上流動的方法無效。它將適用於您選擇的供應商,因爲它可以爲選定的供應商快速進行計算。但是,詳細信息頁面不適用於您的供應商列表中的所有供應商。因此,如果您要將從詳細信息頁面找到的產品數量複製到母版頁,則只能看到一個特定供應商(所選供應商)的產品數量,而不是所有供應商的產品數量。 – jpenninkhof

+0

我添加了另一種(相對較慢)的方法,通過爲列表中的每個供應商開始$ count查詢。 – jpenninkhof