Angular と CRUD の相性は悪いのか?
イシュー
- Jsonオブジェクトの状態に応じて、Listの内容が更新されるような AngularJS モジュールを探してはいるものの、なかなか見つからない。
- もしかして AngularとCRUDは相性が悪いのか?
Angularのいいところ
- Angular を使っていて、特徴といっていいほど素晴らしいのは、DOM(HTML)とデータ(JSON)の分離である。
- 基本的に、Angularでは、DOMの位置情報をController側では必要としない。
- DOMは、HTMLとして既に記載されている。
- データの出力位置も DOMの中に記載されている。
- なので、Controllerでは、DOMの位置をまったく気にしないで、Data(主に $scope)だけを好きなように操作すればいい。
CRUDで実現したいこと
- CRUDで行ないたいのは、データのリスト、登録、編集、削除である。
- これはコントローラで行なう内容であり、DOMはあくまでViewである。
- 仮にngCRUDなるものがあるとして(実際に探したらあったが)、Angularで描画すべきデータは、DOMに記載しておく必要がある。
- このbindされるデータ位置をDOMに記載しておくという点をもって、削除はどうするのか?新規はどうするのか?といったことの対応が難しい。
- (おそらく Angularの思想だと、データドリブンなので、データが消えたら、DOM(画面)上のデータも消える、データが作られたら、DOM上のデータが表示されるといった使い方が好ましい)
- 仮にカラムのようなデータではなく、カラムを含むオブジェクトとしたところで、DOM上での新規、とか、削除の表現を DOMで表現することは出来ず、あくまでコントローラ側で行った変更の反映となってしまう。
- モデルのDDLをAngularで定義することは可能。でもそれはAngularのローカルルールでは使えない、仕様として公開される必要がある。その一つの選択肢として、ember-data で定義されているjson構造というのはありだと思う。
イベントドリブンとデータドリブン
- CRUDで求められているのは「イベントドリブン」な挙動であり、Angularで求められているのは「データドリブン」な挙動であるため、求められているものが違う認識