ضع في اعتبارك العنصر التالي:
<div @click.self.once="eat">Eat <span>me</span></div>
إذا نقرنا على كلمة "أكل" ، فكل شيء يعمل كما هو متوقع. تم إطلاق الحدث مرة واحدة ونحن سعداء.
ولكن إذا نقرنا على "أنا" ، وهي عقدة فرعية ، ثم نقرنا على "أكل" ، فلن يتم إطلاق الحدث أبدًا! يبدو أن .once
سهل للغاية عند الحكم على حدث ما على أنه تم إطلاقه.
أعتقد أن .once
يجب أن يضع علامة "تم" عليه فقط إذا تم إطلاقه بالفعل.
شكرا لتقديم القضية. يُرجى اتباع إرشادات الإبلاغ عن المشكلات وتقديم حد أدنى من JSFiddle أو JSBin يحتوي على مجموعة من الخطوات القابلة للتكرار التي يمكن أن تؤدي إلى السلوك الذي وصفته.
مرحبا،
أنا لست OP لكنني أعتقد أنني تمكنت من إعادة إنتاج المشكلة التي كان يشير إليها. أرفقت JSFiddle أدناه للتوضيح.
النقر فوق كلمة "أكل" يعمل كما هو متوقع: يتم إطلاق الحدث وتحديث بيانات الفاكهة.
إذا أعدنا تحميل JSFiddle ونقرنا على عنصر الامتداد الفرعي "أنا" ، ثم على "أكل" ، فلن يتم تحديث بيانات الفاكهة.
أتمنى أن يساعدك هذا.
boristhuy شكرًا لك على تقديم JSFiddle. هذا بالضبط ما قصدته.
يجب أن يكون هذا خطأ. سيتم حاليًا إزالة مؤشر الحدث بمجرد دخوله ، في الواقع لم يتم استدعاؤه بالفعل بسبب فحص المُعدِّلات.
ربما نحتاج إلى تحديث رمز once
لدعمه.
مثل
(function(){
var called = false;
return function($events){
// modifiers check
// called check
if (called)return;
called = true;
// handler code
}
})()
أما بالنسبة إلى once
المستخدم في وظيفة التقديم ، فسيحدث تغييرًا مفاجئًا. أحاول إيجاد طريقة لإصلاح هذه المشكلة.
once
genCode للقالب.once
المستخدمة في وظيفة التصيير on: {'~click': handle}
، احتفظ بالإستراتيجية القديمة.'~click': handle
'click': handle2
defcc لقد