2017-01-16 7 views
0

私はAngular 1を使用しています。サーバー側のやりとりを行うスマート(コンテナ) todosのリストと新しいフィールドを作成するテキストフィールドを表示する純粋な/ステートレスのプレゼンテーションコンポーネント。プレゼンテーションコンポーネントにはonCreateイベントバインディングがあるため、親コンポーネントは作成時にサーバーにTodoというPOSTを送信できます。 <todo-list>プレゼンテーションコンポーネントでAngularJS:コンポーネントツリーと新しく作成されたエンティティのIDを処理する方法(HTTP経由)

<todo-container> 
<todo-list todos="vm.todos" on-create="vm.postTodoToServer($event)"> </todo-list> 
</todo-container> 

Todoもそう/パッチは、DELETEオペレーションが(将来に<todo-list>ためonUpdateonDeleteバインディングを実装します。ただし、新たに追加されたTodo秒間行うことができる/ IDを入れている必要がありますTodoがサーバーにポストされるまで、私は、そのIDを知ることができません。したがって、<todo-container>は、サーバーが最終的に応答したとき<todo-list>に新しくTodo作成のIDを与えることがある。私はこのユースケースを処理するにはどうすればよい

をエレガン2つのコンポーネントをしっかりと結合することなく、私は<todo-list>を別のコンテナの中でアプリ内の他の場所に使用したいかもしれません。

答えて

1

1つのオプションは、データがクライアント側にのみ存在する場合に、ユーティリティライブラリの一時的なIDとしてUUIDジェネレータを使用することです。 idを負にすることもできます。サーバープロセスは、To Doアイテムが投稿されたときにサーバーに実際には存在しないことを知っています。したがって、実際のIDはそれに割り当てられる必要があります。サーバーIDパターン。その後、POSTコールによって返された実際のサーバー割り当てデータで、予定リスト項目を上書きします。

たとえば、Lodash(ユーティリティライブラリ)には、一意のIDジェネレータ機能があります。

関連する問題