2016-06-30 9 views
0

私はこれを数時間修正しようとしますが、間違いを見ることはできません。私は私のApp.view.xmlSAPUI5 - バインディングの問題

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

data.json

{ 
"greeting": "hey" 
} 

に私の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); 

:私はちょうど単純な結合をしようここで何が間違っているのか分かりません。 デバッグ中のsap.ui.getCore()。getModel()でさえ、私はオブジェクトの{"greeting": "hey"}をoData変数に渡します。

私はあなたが助けることを願っています。

私もここに元の質問を掲載しました。しかし、私はそれを簡素化して以来、私は別個の質問でこれを掲示すべきです。 Binding in List with XML

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

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

sap.ui.getCore()。setModel(oModel); - >動作しません

答えて

0

私はあなたのアプリケーションで絶対バインディングパスを使用するつもりだと思います。私が気づいたもう一つは、あなたがoModelを宣言することであるhttp://help.sap.com/saphelp_hanaplatform/helpdata/en/d5/2e364907f94a3caeb4f5e5ad0cf302/content.htm

、しかし:あなたがここにJSONモデルの結合パスの構文の詳細を見つけることができ

<Page title="{/greeting}"> 

:これは、あなたがスラッシュを前に付けなければならないことを意味し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からデータを取得しています。

モデルがコアからビューに継承されない場合、継承リンクはどこかで壊れている可能性があります。これは例えばダイアログボックス。ダイアログはUIツリーに追加されませんが、addDependentメソッドはダイアログを下層のUIコンポーネント(ビューなど)のライフサイクル管理とデータバインディングに接続します。これについてはStep 16 of the UI5 walk-throughで詳しく読むことができます。

+0

Sry、私の悪いところです。 {/ greeting}です。質問にちょうど打ち間違いがありました 私は今でも私の質問でそれを変更しました。 – Michael

+0

あなたのコードにある別の考えられるエラーと、あなたのコードに基づいた実際の例が見つかりました。 – jpenninkhof

+0

もう一度:ちょうどタイプミス。コードには、oModelとoPositionsModelはありません。非常に多くのタイプミスを投稿して申し訳ありません。これも編集しました。 – Michael

0

モデルをアプリケーションのグローバル名前空間(sap.ui.getCore().setModel())に割り当てると、モデルは自動的にビューにバインドされます。ビュー(またはページ自体)に直接バインドすることができます。

(あなたがクロスビューデータを保存したい場合は、このケースでは、あなたがコアに割り当てることができない限り、ビューにモデルを割り当てることをお勧めします - このモデルに名前を追加することをお勧めします

。ビューのコントローラでthis.getView().setModel()を使用してモデルをビューに移動するだけです(ビュー名を保存しようとすると、ビュー固有のモデルと思われます)。

+0

ありがとうございます。しかし、SAPのドキュメント(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がこれを証明しています。しかし、コアではなくモデルをコンポーネントまたはビューにリンクするのは良い方法です。例えば、コアを使用している他のアプリ(FLP自体など)と競合することなく、Fiori Launchpadからアプリを実行することができます。 – jpenninkhof

+0

UI5に関する明確な話題ではありませんが、自分の経験(および公式のUI5アプリケーション)に基づいて、UI関連/共同制作データにビュー固有のモデルを使用する方が安全です。もちろん、manifest.jsonでモデルを定義すると、モデルはグローバルモデルになり、必要に応じてすべてのビューからアクセスできます。それに加えて、プロジェクトでコンポーネントを使用している場合、そのモデルをコンポーネント自体(名前付き)に割り当てることができます。これにより、あなたのモデルはすべてのビューで利用可能になります。 – nistv4n

関連する問題