1

彼ら、

私は2つのモデルを持っています、NotebookそしてNote。ノートはノートブックに属し、ノートブックには多くのノートがあります。

私のアプリケーションでは、非常に一般的な3列のビューがあり、1列目はノートブックを一覧表示し、2列目は選択したノートブックに対応するメモを一覧表示し、3列目は現在選択されているメモの形式を含みます。

ここに画像の説明を入力してください

Spineでは、リレーションモジュールを使用しませんでした。ユーザーがノートブックを選択するたびに、選択したノートブックget /notebooks/:id/notesの対応するノートをフェッチしてノートリストをレンダリングするために呼び出します。ユーザーがクリックして新しいノートを作成すると、現在選択されているnotebook_idとノートモデルのSpineオブジェクトを作成します。を呼び出しますsave()。既存のノートブックで正常に動作します。

ただし、ユーザーが新しいノートブックを作成するときに問題が発生します。ユーザーがクリックしてこの新しいノートブック内に新しいノートを作成した場合、ノートブックの作成ajaxが完了する前に、データベースから実際のノートブックIDを取得していません。したがって、ajaxのコールバックを待つ必要があると思います。そのnotebook create前に、ユーザーがクリックして新しいメモを作成するのをブロックします。

しかし、Spineのドキュメントから、Alexは次のように述べていますWaiting for a server response goes against the whole concept of an asynchronous user interface

それで、これを行う正しい方法は何ですか?私はそれを正しくやっていますか?

どうもありがとう。

4

1 に答える 1

0

場合によっては、サーバーの応答を待たない方がはるかに複雑です。ノンブロッキング UI が追加の開発努力とコードの複雑さに見合う価値があるかどうかを判断するのは、あなた次第です。この場合、ノートブックの id が更新されたときにノートの参照 id の更新をトリガーするのはそれほど難しくありませんが、それが起こる前にノートを永続化しようとする試みを許可したくないようです。ただし、これは UI をブロックしなくても実行できます。

于 2013-01-29T17:47:50.900 に答える