angus
(Angus McLeod)
1
一些背景信息
出现这种情况的原因是:
-
activity pub 插件在客户端设置了一些默认值(此处)。
-
所有类别自定义字段的更改都会被记录为核心中的类别设置更改(此处)。
“1”(在客户端设置类别自定义字段的默认值)似乎是目前处理类别自定义字段管道的最佳方式,因为 update 类别操作会自动保存它们,并且您希望确保在自定义字段相互依赖时(如 AP 插件中的情况)设置了默认值。
请注意,目前插件无法选择性地将自定义字段序列化到服务器(不进行猴子补丁)。
鉴于以上情况,我想知道“2”是否有意义?正如 David 指出的那样,考虑到管道的当前配置,自定义字段的更改并不一定表示类别设置配置的更改(即从 nil 变为默认值)。
想听听其他人对此的看法。也许我遗漏了处理类别自定义字段默认值的更好方法。
3 个赞
angus
(Angus McLeod)
2
@david 再次将此推到你的列表前面。你直觉如何?如果你认为核心中可能需要更改类别自定义字段的保存方式,我可以尝试一下。或者也许我会尝试寻找一种为自定义字段设置默认值的新方法。或者也许我们暂时搁置它?
david
(David Taylor)
3
是的,这确实棘手。我猜大多数插件都不会遇到这个问题,因为它们类别设置的“默认值”是 null。
你是否有一个核心 API 更改的想法,可以帮助改善这种情况?
完全未经测试,但我认为我们可以通过使用原始 HTML 输入字段(注意是小写的 input 而不是 Ember 的双向绑定 \u003cInput 组件)来立即实现一些功能。
<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) 中描述的默认值配置)
1 个赞