متابعة للنقاش من مجموعة أدوات Discourse لعرض النماذج![]()
أريد أن يكون زر الحفظ الخاص بي متاحًا فقط عندما يكون هناك شيء لحفظه.
البحث عن isDirty في جميع الإضافات لا يعثر على شيء. المكان الوحيد الذي أراه فيه في النواة هو في مجموعة الأدوات.
بالتأكيد هناك طريقة لمعرفة ما إذا كان يجب تنشيط زر الحفظ.
لدي هذا:
export default class ServerCreate extends Component {
@tracked formApi = null;
@tracked isDirty = false;
@action
registerAPI(api) {
console.log("registerAPI called", api);
this.formApi = api;
// api.onChange(() => {
// console.log("onChange!", api.isDirty);
// this.isDirty = api.isDirty;
// });
}
get submitDisabled() {
// قد يكون formApi غير معرف حتى يسجل النموذج
console.log("submitDisabled", this);
return !this.formApi?.isDirty;
}
....
<Form
@data={{this.formData}}
@onRegisterApi={{this.registerAPI}}
@onSubmit={{this.handleSubmit}}
as |form|
>
وهذا (لقد جربت الكثير من الأشياء):
<form.Submit
@label="pfaffmanager.server.save_button"
class="save"
@icon="check"
@disabled={{this.registerAPI.isDirty}}
/>
لم أتمكن من معرفة كيفية رؤية ما إذا كانت البيانات قد تغيرت لمعرفة ما إذا كان يجب حفظها. لا أفهم لماذا لا أجد مثالاً على هذا. لقد جربت الكثير من الأشياء التي تبدو وكأنها مثال في الوثائق، لكن لم ينجح أي منها.
لقد حاولت النظر إلى صفحات إعدادات المسؤول، والتي أعرف أنها تعرض زر حفظ فقط إذا تغيرت البيانات، ولكن يبدو أنها لا تستخدم مجموعة أدوات النماذج.
أرى أن دالة registerAPI(api) الخاصة بي يتم استدعاؤها، ولكنني لا أرى isDirty فيها:
ثم عندما أسجلها، يبدو أنها مجرد نص؟
بالطبع isDirty هو عندما أريد تمكين الزر، وليس تعطيله، ولكن الأمثلة الأخرى التي حصلت عليها (ربما من ask.discourse.com) أخبرتني أن أفعل شيئًا مثل @disabled={{not this.isDirty}} ولا يوجد شيء مثل not، لذلك في الوقت الحالي سأكون سعيدًا إذا عملت بشكل عكسي.

