1

新しいエンティティを追加するためにこれまでに見たすべての例は、次の手順を実行します。

  1. 画面上のコントロールにバインドされる一連の「new-」変数を作成します。
  2. ユーザーが追加を送信するときに、初期化されていない新しいエンティティを作成しました。
  3. 「new-」変数を新しいエンティティの各メンバーに 1 つずつコピーします。
  4. 新しいエンティティをマネージャーのエンティティ リストにプッシュします。
  5. 変更内容を保存。
  6. 「new-」変数をすべてクリアします。

これは多くの理由で問題があります。これらの「新しい」変数は、画面上のコントロールに加えて維持する必要があります。サーバー側エンティティが変更されると、手動で変更する必要があります。これには時間がかかり、エラーが発生しやすくなります。

初期化されていない新しいエンティティを最初に作成し、それらの変数を「new-」プレフィックスで使用せずに、すぐに画面上のコントロールにバインドできるようにしたいと考えています。ユーザーが追加を送信したい場合は、新しいエンティティをマネージャーのエンティティ リストにプッシュし、変更を保存します。次に、画面上のコントロールを、新しく作成された初期化されていないエンティティにすぐにバインドします。

このようにして、ビュー モデルで個々のエンティティ属性を処理することを回避できます。これにより、より堅牢なコードが生成され、多くの時間を節約できます。

現在、新しいエンティティを作成するためのメタデータは、ドキュメントの準備ができたときに利用できません。ダウンロードした場合、新しいエンティティを画面上のコントロールにバインドする前に、非同期完了に対処する必要があります。

だから私の質問は:初期化されていない新しいエンティティを待機せずに作成し、画面上の HTML コントロールにすぐにバインドできるように、最初の HTML ダウンロードでメタデータをダウンロードする方法はありますか?

4

1 に答える 1

2

初期化されていない新しいエンティティが何を意味するのかはわかりませんが、はい - たとえば、次のような新しい車を作成できます。

var newCar = manager.metadataStore.getEntityType("Car").createEntity();
manager.addEntity(newCar);

コントロールを newCar にバインドします。変更を保存するには call manager.saveChanges();、call をキャンセルするにはmanager.rejectChanges();

エンティティ ブリーズを操作できるようにするには、メタデータが必要です。必要に応じて、ページ自体とともにメタデータを送信できます。その後、 manager.importMetadata() を使用してマネージャーにインポートできます。唯一の問題は、後で importMetadata() に渡すことができるように、(ビルド中に) メタデータ文字列を生成する小さなアプリを作成する必要があることです。詳細については、MetadataStore クラス APIを参照してください。

于 2012-12-05T10:30:15.410 に答える