これは、今日私が遭遇した少し奇妙な問題です。Breeze と Knockout を使用するアプリケーションがあります。私のページの 1 つで、ユーザーがプロジェクト データを編集および保存できるようにしています。保存ボタンは、変更が行われた場合にのみ有効になります。変更を追跡するために、propertyChanged イベントをサブスクライブします。このページには、いくつかの問題を引き起こしているかなりの数のドロップダウンがあります。以下は、ドロップダウンの 1 つの例です。
<div>
<label for="projQAManager">QA Manager</label>
<select id="projQAManager" data-bind="options: QAManagers,
optionsText: 'FullName',
optionsValue: 'USERNAME',
optionsCaption: 'None',
value: project().QAManager"></select>
</div>
この問題は、project().QAManager が "" の場合に発生します。プロジェクトがロードされるとすぐに propertyChanged イベントが発生し、QAManager フィールドが "" から null に変更されていることが示されます。これにより、実際には何も変更されていないにもかかわらず、エンティティは変更されたと信じ込んでいます。QAManager がすでに null の場合、すべて正常に動作します。必要に応じて、DBを試してクリーンアップし、「」でフィールドをクリアしてnullに設定できると思いますが、回避できる場合は避けたいと思います。