私はKnockoutJSで遊んできましたが、クラックから落ちるのを防ぐことで、あらゆる角度からデザインを簡素化することが大好きです。私の質問は、サーバーにデータを保存するために推奨される「ベストプラクティス」は何ですか?私の理解では、接続されたMVVMでは、最初の "M"はデータレイヤーなので、ViewModelトリガーの依存関係の追跡と通知はデータレイヤーに直接保存されます。 JavaScriptアプリケーションでは、接続が解除され、AJAXを使用してサーバーに選択的に保存されます。MVVM/Knockoutjs Web Appの変更を保存する最も良い方法は?
私が現在使用しているアプリはMVC3で、私のコントローラに「保存」アクションを書いて、ページのどこかに「保存」ボタンを押し込んで、その保存アクションにViewModel全体を投稿する方法を絶対に得ます。それをデータベースに保存します。しかし、素早く編集してからもう一度保存するとどうなりますか?または、保存ボタンがデザインのフローに合わない場合はどうなりますか?代わりに、保存ボタンを一切持たずにフォームに変更が加えられるたびに、アクションに投稿したいのですか?
- 変更が行われるたびにViewModel全体を投稿して、新しいものとそうでないものを把握します(特に大きなモデルの場合は、何もない場合そうでなければ、各保存時に送信されるデータが不必要に大きくなるためです)。
- ViewModelの各項目にプロパティを追加します。プロパティは、最後の保存以降に新しい項目か変更された項目かを追跡します。その後、これらのアイテムをgrepしてサーバーにのみ送信します(これはテストしていませんが、これはRailsアプリケーション用の_destroyプロパティを使用して行うことができます)。
- 最初の2つのオプションの痛みを最小限に抑えるため、可能な限り多くのViewModelに分割します(これはおそらく関係なく実行する必要があります)。
- いくつかの他のより良い方法ですか?
私は考えていないいくつかの良いアイデアがあることを願っています。宣言的にすべてを束縛し、まだを保存するには、がすばらしいでしょう。
あなたは(ASP.NET MVCのように)MVCとMVVMをconflatingています。どちらも基本的に同じパターンですが、MVVMにはWPFアプリケーションの設計に固有の変更があります。 – Will
実際にKnockoutJS(http://knockoutjs.com)はMVVMパターンを使用しています。これはポスターが参照していたものです。 –
恐ろしい質問です!ノックアウトのない同じ質問はおそらくもっと役立つでしょう。それはそこにある多くのJSフレームワークのほんの一例です。私はこの質問に対する答えを探し続けます。 – noocyte