これは確かに難しいですね。おそらく、ほとんどのプラグインは、カテゴリ設定の「デフォルト」が null 値であるため、この問題に遭遇しないのでしょう。
状況を改善できるようなコア API の変更について、何かお考えはありますか?
まったくテストしていませんが、生の HTML の input フィールド(Ember の双方向バインドされた <Input> コンポーネントではなく、小文字の input に注意してください)を使用することで、現時点で何か対応できるのではないかと思います。
<input
value={{or category.custom_fields.my_field "default value"}}
{{on "change" this.updateMyFieldValue}}
/>
この戦略により、モデルインスタンスから値の読み取り/書き込み方法を制御できます。したがって、UI で値がデフォルトに設定されている場合、カスタムフィールドに「null」として書き込むことができます。
@action
updateMyFieldValue(event){
let newValue = event.target.value;
if(newValue === "default value"){
newValue = null;
}
this.category.set("custom_fields.my_field", newValue);
}
(そして、OP の (1) で説明したデフォルト値の設定を削除することになります)