こんにちは。@angus がこちらで提示したコードと、GitHub リポジトリの手順に従って、トピックのカスタムフィールドを正常に動作させることができました。ただし、コンポーザーの「ヘッダー」領域(通常、カテゴリなどを編集する場所、つまりedit-topic コネクター内)で編集できるようにする部分だけが例外です。
リポジトリ内のコード、特に plugin.rb やその他のファイルのコードに従いました。例えば、connectors/edit-topic/edit-topic-custom-field-container.hbs ファイルに以下のように入力欄を追加しました(こちらを参照)。
{{#if isString}}
{{input
type="text"
value=(readonly fieldValue)
class="topic-custom-field-input large"
input=(action "onChangeField" value="target.value")
placeholder=(i18n 'topic_custom_field.placeholder' field=fieldName)
}}
{{/if}}
また、topic-custom-field-initializer にも以下のコードを追加しました。
api.registerConnectorClass('edit-topic', 'edit-topic-custom-field-container', {
setupComponent(attrs, component) {
const model = attrs.model;
let props = {
fieldName: fieldName,
fieldValue: model.get(fieldName)
}
component.setProperties(Object.assign(props, fieldInputTypes(fieldType)));
},
actions: {
onChangeField(fieldValue) {
this.set(`buffered.${fieldName}`, fieldValue);
}
}
});
...
api.serializeOnCreate(fieldName);
api.serializeToDraft(fieldName);
api.serializeToTopic(fieldName, `topic.${fieldName}`);
しかし、他のリポジトリのコード(コンポーザーの値にカスタムフィールド値を追加するなど)は問題なく動作し、エラーも発生しませんが、edit-topic コネクターの入力欄に入力した値を保存することができません。そこに値を入力しても、編集を保存するとその値が消えてしまいます。
edit-topic コネクターで値を保存するために、他に何か必要な処理があるのでしょうか?