كيفية تحديث السمات المؤقتة من داخل مكون Glimmer المرتبط بتحرير الموضوع

هذا هو القالب القديم الذي أحاول التخلص منه ونقله إلى مكون Glimmer

{{#if model.showLocationControls}}
  {{add-location-controls
    location=buffered.location
    categoryId=buffered.category.id
  }}
{{/if}}

في الأسفل، يوجد ببساطة this.set("location", location); والذي يبدو أنه يعرض ربطًا ثنائي الاتجاه.

هذا يعمل بشكل جيد.

يوفر الوصول إلى المخزن المؤقت باستخدام buffered الاتصال الضروري لتمرير التغييرات في الموقع.

يأتي التحدي عند استخدام مكون Glimmer بديل:

export default class EditLocationDetails extends Component {

  @action
  updateLocation(location) {
    this.args.outletArgs.buffered.location = location;
  }

  <template>
    {{#if this.args.outletArgs.model.showLocationControls}}
      <AddLocationControls
        @location={{this.args.outletArgs.buffered.location}}
        @category={{this.args.outletArgs.buffered.category}}
        @updateLocation={{this.updateLocation}}
      />
    {{/if}}
  </template>
}

الآن يمكن تحديث السمة، لكنها لا تلتصق، ربما لأنها وسيط Glimmer للبيانات لأسفل.

ماذا أفقد؟

هل هناك إجراء يمكنني الوصول إليه يسمح لي بتمرير التغيير؟

4 إعجابات

حسنًا، هذا ما يبدو أنني أفتقده.

عند استكشاف الكائن، وجدت بعض السمات المثيرة للاهتمام، لذا يصبح هذا الإجراء:

  @action
  updateLocation(location) {
    this.args.outletArgs.buffered.buffer = {
      location: location
    }
    this.args.outletArgs.buffered.hasBufferedChanges = true;
  }

يبدو أن هذا ينجز المهمة.

لم يكن أي من ذلك واضحًا على الفور تقريبًا.

يرجى إعلامي إذا كانت هناك طريقة أفضل للقيام بذلك.

4 إعجابات

هناك طريقة أكثر أناقة للقيام بذلك ويفترض أن تكون هذه الطريقة أكثر قياسية ومقصودة:

  @action
  updateLocation(location) {
    set(this.args.outletArgs.buffered, "location", location);
    this.location = location;
  }
3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.