2016-06-30 19 views
0

我試圖解決這個問題好幾個小時,但無法看到我的錯誤。我嘗試做的只是一個簡單的綁定:在我App.view.xmlSAPUI5 - Bindingproblem

在我的index.html

data-sap-ui-xx-bindingSyntax="complex" 

... 

var oModel = new sap.ui.model.json.JSONModel(); 
oModel.loadData("model/data.json"); 
sap.ui.getCore().setModel(oModel); 

... 
<Page title="{/greeting}"> 
... 

data.json

{ 
"greeting": "hey" 
} 

我在這裏看不到有什麼問題。 在調試期間,即使調用了sap.ui.getCore()。getModel(),也會在oData變量中給我一個帶有「greeting」:「hey」}的Object。

我希望你們能幫忙。

我也在這裏發佈了原始問題。但是,既然我簡化了它,我應該在一個單獨的問題中發佈這個。 Binding in List with XML

--------- --------更新

this.getView()則setModel(oModel)。 - >作品

sap.ui.getCore()。setModel(oModel); - >不起作用

回答

0

我想你的意思是在你的應用程序中使用絕對綁定路徑。這意味着,你將有一個斜槓前綴是:

<Page title="{/greeting}"> 

你可以找到更多有關JSON模式這裏的綁定路徑語法:http://help.sap.com/saphelp_hanaplatform/helpdata/en/d5/2e364907f94a3caeb4f5e5ad0cf302/content.htm

另一件事我注意到的是,你聲明oModel,但將數據加載到oPositoModelionsModel中。我想你打算把你的數據加載到oModel中,而不是:

var oModel = new sap.ui.model.json.JSONModel(); 
oModel.loadData("model/data.json"); 
sap.ui.getCore().setModel(oModel); 

其餘代碼看起來很合理。看看this jsbin,我已經稍微修改了你的代碼,以便它從Star Wars API中提取數據。

如果Model沒有從核心繼承到您的視圖,那麼繼承鏈接可能會在某處被破壞。這發生在例如對話框。對話框不會添加到UI樹中,但addDependent方法仍然會將該對話框連接到基礎UI組件的生命週期管理和數據綁定(例如,視圖)。你可以在Step 16 of the UI5 walk-through瞭解更多。

+0

Sry,my bad。在我的原始代碼中是{/ greeting}。是一個錯字 問題,我現在也改變了我的問題。 – Michael

+0

在您的代碼中發現另一個可能的錯誤以及基於您的代碼的工作示例。 – jpenninkhof

+0

再次:只是一個錯字。在代碼中只有一個oModel而沒有oPositionsModel。對不起發佈這麼多的錯別字。在調查中也對此進行了編輯。 – Michael

0

如果將模型分配給應用程序的全局名稱空間(sap.ui.getCore().setModel()),則模型應自動綁定到視圖。您可以直接將它們綁定到視圖(或頁面本身)。

我們推薦分配模型的意見(除非你想存儲交叉視角的數據,在這種情況下,你可以把它分配給核心 - 但建議將名稱添加到該模型

。因此,只需在視圖的控制器中使用this.getView().setModel()將模型移動到視圖中(因爲您試圖存儲視圖名稱,它似乎是一個視圖特定模型)。

+0

謝謝。但是SAP的Doc(http://help.sap.com/saphelp_hanaplatform/helpdata/en/91/f0d1c56f4d1014b6dd926db0e91070/content.htm?frameset=/en/d5/2e364907f94a3caeb4f5e5ad0cf302/frameset.htm¤t_toc=/en/d0/1cd0b7be7f441cb6c56ad4577b428c/ plain.htm&node_id = 129)說這是可能的。 和sap.ui.getCore()。setModel(oModel,「data」); – Michael

+0

也不起作用這也是不正確的。模型從父級控件繼承。核心 - >組件 - >查看。我在答覆中發佈的jsbins證明了這一點。確實,將模型鏈接到組件或視圖而不是核心是一種很好的做法。例如,允許您從Fiori Launchpad運行應用程序,而不會與其他也在使用核心的應用程序(如FLP本身)發生衝突。 – jpenninkhof

+0

在UI5中這不是一個明確的主題,但是基於我的經驗(和官方的UI5應用程序),對UI相關/配置數據使用視圖特定模型更爲安全。當然,如果你在manifest.json中定義一個模型,它將是一個全局模型,可以根據需要從任何視圖訪問。除此之外,如果您在項目中使用組件,則可以將模型分配給組件本身(使用名稱)。有了這個,你的模型將在每個視圖中都可用。 – nistv4n