9

XML ビューを作成しました。その中にテーブルがあります:

<Table xmlns="sap.m"
  id="myTable"
  select=""
  selectionChange=""
  swipe=""
  growingStarted=""
  growingFinished=""
  updateStarted=""
  updateFinished=""
  itemPress="console.log('clicked on item')"
>
  <columns>
    <!-- sap.m.Column -->
  </columns>
  <items>
    <!-- sap.m.ListItemBase -->
  </items>
</Table>

コントローラーの を使用してテーブルに行を挿入しましたが、onInit行をクリックしてもメッセージが表示されません。

console.log(tablePippo.getProperty("itemPress"));コントローラー内で使用すると、スローされます

キャッチされないエラー: プロパティ "itemPress" が要素 sap.m.Table#operationDetail--myTable に存在しません

4

5 に答える 5

52

sap.m.ListBaseこれは、関連するコントロールを使用するときに人々が直面するよくある問題のようです。イベントを管理する方法 (特にイベントを有効化する方法) の概要を説明します。

混乱は、sap.m.ListModeから継承するコントロールsap.m.ListBaseとからsap.m.ListType継承するアイテムに関連している可能性がありますsap.m.ListItemBase

次のサンプル リストがあるとします。

<List
  selectionChange=".onSelectionChange"
  itemPress=".onItemPress"
  delete=".onDelete"
>
  <items>
    <ObjectListItem
      title="Hello ListItem"
      press=".onObjectListItemPress"
    />
  </items>
</List>

sap.m.ListMode (サンプル)

sap.m.Listまたはを使用している場合sap.m.Table、イベントの発生は使用している によって異なりmodeます。残念ながら、modeプロパティのないリスト/テーブルは、その側からイベントを発生させません! List / Table でこれらのイベントを発生させたい場合は、それにモードを割り当てる必要があります。例えば:

<List
  mode="SingleSelect"
  ...
>

これらはsap.m.ListModeドキュメントからの可能なモードです:

なし (デフォルト)

modeプロパティが割り当てられていないため、イベントは発生しません。

リストモード なし

シングルセレクト | 単一選択左

リスト コントロールmode="SingleSelect"は、各項目の右側にonSelectionChangeラジオ ボタンを表示し、ユーザーが特定のラジオ ボタン コントロールをクリックするとすぐにイベントを発生させます。を使用"SingleSelectLeft"すると、ラジオ ボタンがアイテムの左側に移動するだけです。

リストモード

シングルセレクトマスター

リストコントロールはmode="SingleSelectMaster"、マウスオーバーで手を表示onSelectionChangeし、項目をクリックすると を起動します。

リストモード SingleSelectMaster

複数選択

のリスト コントロールはmode="MultiSelect"チェックボックスを提供し、項目のチェックおよびonSelectionChangeチェック解除のたびにイベントを発生させます。

リストモードのマルチセレクト

消去

でリストを使用するmode="Delete"と、素敵な削除ボタンと発火が得られますonDelete

リストモード 削除


sap.m.ListType (サンプル)

もう 1 つ確認すべきtypeプロパティがあります。それは、アイテムのプロパティです。

すべてのアイテムは から継承するsap.m.ListItemBaseため、 という属性がありますtype。それがどのように見えるか見てみましょう:

<items>
  <ObjectListItem
    type="Active"
    press=".onObjectListItemPress"
    detailPress=".onDetailPress"
    ...
  />
</items>

sap.m.ListModeドキュメントにリストされているこれらのタイプがあります。

アクティブ

に応じてmodeitemPressリスト pressリスト項目の を起動できます。選択されたアイテムが強調表示されるため、ユーザーは選択されたものを見ることができます。

アイテム タイプ アクティブ

詳細

イベントを発生させる詳細ボタン (アイコンsap-icon://edit) が表示されますdetailPress

アイテムの種類 詳細

詳細とアクティブ

その名の通り、ディテールとアクティブを合わせたタイプです。したがって、ボタンのクリック時に詳細ボタンが起動detailPressし、項目自体が list イベントを起動しますitemPress

項目タイプ DetailAndActive

ナビゲーション

アイテムにはナビゲーションのような外観がありitemPress、アイテムpressが呼び出されます。

項目タイプ ナビゲーション

非活性

アイテム自体からアイテム イベントが呼び出されることはありません。


それでは、あなたの問題を見てみましょう。テーブル コントロールに a をmode割り当てるか、アイテムに a を割り当てる必要がありますtype。その後、イベントが発生するはずです。

通常、予期しない動作が発生する可能性があるため、 aListModeと aListTypeを同時に使用することは避けますが、自分で確認してください。

于 2014-06-23T08:34:29.243 に答える
2

type="Active"を ColumnListItem に追加

...
<items>
    <ColumnListItem type="Active">
        <cells>
            <Text text="{Name}"/>
        </cells>
    </ColumnListItem>
</items>
...

ヤン・ワン: https://scn.sap.com/thread/3697995

于 2016-02-11T23:14:49.187 に答える
0

XML ビューのコントローラーで myItemPress メンバー関数を定義し、次のように参照します。

itemPress = "myItemPress"

例を見る

于 2014-06-21T09:32:29.313 に答える