这是我今天遇到的一个奇怪的问题。我有一个使用 Breeze 和 Knockout 的应用程序。在我的一个页面上,我允许用户编辑和保存项目数据。保存按钮仅在进行更改时启用。为了跟踪更改,我订阅了 propertyChanged 事件。这个页面有很多下拉菜单,这会导致一些问题。这是其中一个下拉菜单的示例。
<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,但如果可以避免,我宁愿不这样做。