Vue: لا يتم تحديث ربط قيمة النموذج بالسرعة الكافية

تم إنشاؤها على ٢٠ ديسمبر ٢٠١٦  ·  3تعليقات  ·  مصدر: vuejs/vue

لنفترض أن لدي مكونًا بسيطًا لا يحتوي إلا على طريقة mounted تقوم بما يلي:

this.myValue = 'a value'

$(this.$el).parent('form').submit()

يبدو html المكون الخاص بي كما يلي:

<form action="http://…">
    <input type="text" :value="myValue">
</form>

كما ترى أنا أستخدم jQuery لإرسال النموذج وإذا حدث كل من تعيين القيمة وإرسال النموذج في نفس الوظيفة ، فسيتم تقديم __بيانات فارغة__. يمكنني التغلب على هذا باستخدام مهلة بدون تأخير ، لكن هذا بالطبع ليس مثاليًا.

setTimeout(() => {
    $(this.$el).parent('form').submit()
})

يحدث هذا أيضًا عندما لا يكون في الطريقة المثبتة ، ولكن على سبيل المثال on blur out ، لذلك لا علاقة له بتحميل الصفحة أو التأخير. نفس الشيء ينطبق على :value مقابل v-model .

لا أعرف الكثير من العناصر الداخلية لـ Vue أو JS ، لكنني أفترض أنه لم يكن قادرًا على تعيين القيم بعد. باستخدام المهلة ، يتم الإرسال في العلامة التالية.

التعليق الأكثر فائدة

استخدم vm. $ nextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})

ال 3 كومينتر

اعتقدت أنه لا توجد طريقة لحل المشكلة.

في هذه الحالة ، أكتب يدويًا قيمة المعلمة لـ ajax.

هل تم نشر هذه القضية قبل ذلك الحين؟ لا يمكن العثور على أي شيء.

حسنًا ، في حالتي ، أريد فقط إرسال النموذج تلقائيًا بما في ذلك تحديث الصفحة ، ولا أريد (ولا يمكنني) إرساله عبر Ajax. إذا لم يكن هناك حل ، فربما يكون من الجيد ذكره في المستندات؟

استخدم vm. $ nextTick

this.myValue = 'a value'

this.$nextTick(function () {
  $(this.$el).parent('form').submit()
})
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات