これが繰り返しである場合は申し訳ありませんが、私は Breezejs.com のドキュメントを調べていて、「ベスト プラクティス」について少し詳しく説明できるかどうかを確認したかったのです。
.extend を使用して、親オブジェクトにいくつかのナビゲーション プロパティをロードしています。そのオブザーバブル配列にエンティティを追加したいときは、モーダル ポップアップを使用しています。モーダルを呼び出すビューに空白のエンティティが追加されていますが、エンティティを作成して監視可能な配列を保存した後にモーダルを閉じると、メイン ページの新しいエンティティが空白のままになります。
http://www.breezejs.com/documentation/navigation-propertiesは、 Observable 配列に .push() を使用するとオブジェクトが配列に追加されるため、これを正しく行っているかどうか、またはより良い方法。おかしいと思われる理由は、エンティティをモーダルから親ビューに戻してからプッシュする必要があり、おそらくもっと良い方法があると思ったからです。
編集
親のビュー モデルから、Durandal.js の app.js を使用してモーダルを表示します。
var addComment = function () {
rfcommentcreate.responseFormId(responseForm().id());
app.showModal(rfcommentcreate).then(function (modalResult) {
if (!modalResult) { datacontext.cancelChanges(); return false; }
console.log(modalResult); // Just to make sure the result is not null and of the right type
responseForm.responseFormResponseFormComments.push(modalResult);
return true;
});
};
モーダルに保存すると、作成されたオブジェクトが返されます。
datacontext.saveChanges()
.fail(initFailed)
.fin(complete);
function complete() {
self.modal.close(responseFormComment()); // responseFormComment is the entity that I work on in the modal
}
ResponseForm.ResponseFormResponseFormComments は、ResponseForm のナビゲーション プロパティです。
上記のコードはエンティティを Breeze のエンティティ マネージャに追加しますが、Knockout は作成後にエンティティを追跡しません。親ビューの私のHtmlには次のようなものが表示されるため、これは本当のステートメントのようです
: @
HTMLコードから
<span data-bind="text: user().fullName"></span> : <span data-bind="text: message"></span> @ <span data-bind="DateTime: commentDt"></span>
モーダルでエンティティを作成した後
私がそれを適切に解釈していれば動作するはずです。
A: そうではなく、おそらく私のせいです B: ナビゲーション プロパティを配列に「プッシュ」せずに追跡するためのより良い方法はありますか?
Orders() ではなく Orders にプッシュしたことに注意してください。