Knockout.js を使用してゲスト リスト アプリを作成していますが、これまでのところ順調に進んでいます。ただし、ベストプラクティスの質問があります。私のアプリには、いくつかの異なるタイプのオブジェクトがあります: ゲストとその中のタグです。ゲストは複数のタグを持つことができ、タグは複数のゲストを持つことができます。アプリのさまざまなポイントで、両方の配列を個別に表示する必要があります。たとえば、すべてのゲストとそれに関連付けられたタグを表示できる「ゲスト」ビューと、すべてのタグとそれに関連付けられたゲストを表示できる「タグ」ビューがあります。現在、ゲストにタグを追加するためのコードは次のようになります。
var tag = function(opts) {
this.guests = ko.observableArray()
// Other tag code here...
}
var guest = function(opts) {
this.tags = ko.observableArray()
// Other guest code here...
var self = this
this.addTag = function(tag) {
self.tags.push(tag)
tag.guests.push(self)
}
}
各 observableArray を個別に更新する以外に、Knockout でこの種の多対多の関係を行うためのより良い方法があるに違いないことはわかっています。これはまた、ゲストがタグを含むタグプロパティ/配列を持ち、ゲストを含むゲストプロパティ/配列を持ち、タグプロパティを持つ、一種の再帰的なアプリ構造につながります...あなたは写真を手に入れます。
現在、ViewModel 構造は次のようになっています。
- Parent Object
- Guests ObservableArray
- Guest Object
- Tag Object as property of Guest
- Tags ObservableArray
- Tag Object
- Guest Object as property of Tag
したがって、私の質問は 2 つあると思います: 1) 再帰的な配列を避けるために ViewModel を構造化するより良い方法はありますか? 2) タグ配列とゲスト配列の両方を個別に更新するのではなく、Knockout.js を使用して ViewModel を DRY で更新するにはどうすればよいでしょうか? ありがとう!