1

SAP HCM 開発の経験は豊富ですが、UI5 (Eclipse を使用) を学ぶための探求を始めたばかりなので、私の質問が少し基本的なものである場合は、事前にお詫び申し上げます...

(UI5 ロックスター DJ Adams の例に基づいて) データのバインドを作成しようとしていますが、何らかの理由で結果がありません。

  1. 私のコントローラーでは、次のコードを (onInit 関数で) 入力して、データを作成し、それらを使用できるようにしました。

    onInit: function() {
    var cities = [ { id: "A1", name: "Kobe" },
               { id: "A2", name: "Hiroshoma" }
    ];
            var oModel = new sap.ui.model.json.JSONModel();
            oModel.setData(cities);
    
            sap.ui.getCore().setModel(oModel);
    
    
    
    },
    
  2. 私の見解では、次のコードを使用してデータをバインドしようとしています。

                            </IconTabFilter>
                            <IconTabFilter
                                binding="{/cities/0}"
                                text="{name}"
                                icon="sap-icon://group"
                                design="Horizontal">
    
                            </IconTabFilter>
                            <IconTabFilter
                                binding="{/cities/1}"
                                text="{name} ({id})"
                                icon="sap-icon://group"
                                design="Horizontal">
    
                            </IconTabFilter>
    
                        </items>
                    </IconTabBar>
    </content>
    </Page>
    </core:View>
    
  3. 私の出力では、すべての要素が正しく表示されますが、モデルで初期化した値が得られません。ただし、エラーも発生しません

私の質問: 1. どこでエラーが発生したかを確認するための支援/ガイダンスを提供してもらえますか? 2. データバインディングに関して問題がどこにあるかを検出する最も簡単な方法は何ですか (デバッガー、その他のヒント)?

ご指導いただき、誠にありがとうございました。

トム

4

3 に答える 3

2

エラーは確かにバインディングにあります。変数がありますがcities、JSON コンテキストは で始まりますid。ルート要素を持つように JSONModel を更新できますcities

.setModel({
  cities: [
    { id: "A1", name: "Kobe" },
    { id: "A2", name: "Hiroshoma" }
  ]
});

デバッグに関しては、標準の Google Chrome ブラウザー ツールを好みます。これにより、監視、ブレークポイント、および (小さな) ライブ コードの変更が可能になります。

于 2014-02-25T19:16:51.213 に答える
0

モデルを作成するあなたのアプローチは静かではありません。変数の都市はオブジェクトではなく配列です。モデルにデータを設定することができます:

onInit: function() {
var cities ={ "cities": [{ "id": "A1", "name": "Kobe" },
                     { "id": "A2", "name": "Hiroshoma" }
                     ]}
    var oModel = new sap.ui.model.json.JSONModel();

    oModel.setData(cities);

    sap.ui.getCore().setModel(oModel);

},

または、プロパティを設定できます:

var cities = [ { id: "A1", name: "Kobe" },
       { id: "A2", name: "Hiroshoma" }
];
    var oModel = new sap.ui.model.json.JSONModel();

    oModel.setProperty("/cities", cities);

    sap.ui.getCore().setModel(oModel);

また、xml を正しくバインドする必要があります。SapUi5 explored または developers guide のリスト項目のテンプレートに従うことができます

于 2016-11-25T04:12:53.483 に答える
0

テンプレートを使用して、個々の要素をバインドする代わりに、テンプレートを使用して配列を個々の要素にバインドしてください。例:

<List
items="{/ProductCollection}"
headerText="Products">
<items>
  <ObjectListItem
    title="{Name}"
    type="Active"
    press="onListItemPress"
    number="{Price}"
    numberUnit="{CurrencyCode}">
    <firstStatus>
      <ObjectStatus
        text="Overweight"
        state="Error" />
    </firstStatus>
    <secondStatus>
      <ObjectStatus
        text="In Stock"
        state="Success" />
    </secondStatus>
    <attributes>
      <ObjectAttribute text="{WeightMeasure} {WeightUnit}" />
      <ObjectAttribute text="{Width} x {Depth} x {Height} {DimUnit}" />
    </attributes>
  </ObjectListItem>
</items>

【実例:https://sapui5.hana.ondemand.com/sdk/explored.html#/sample/sap.m.sample.ObjectListItem/code】

データをより細かく制御したい場合は、キーと値のペアで複数のモデルを設定できます。

例:

sap.ui.getCore().setModel("key",oModel);

そして値を取得するには:

sap.ui.getCore().getModel("key");
于 2014-09-01T09:10:16.900 に答える