Ember.js: مربعات الاختيار غير قابلة للنقر إذا كانت مضمنة في عنصر مرفق به إجراء.

تم إنشاؤها على ٤ ديسمبر ٢٠١٤  ·  4تعليقات  ·  مصدر: emberjs/ember.js

مثال بسيط ،

مع علامة إدخال من النوع = "checkbox" الموجودة بداخلها. خانة الاختيار قابلة للنقر كما هو متوقع. الآن قم بتنفيذ إجراء على عنصر div المحتوي ، لنفترض أنه يمكنك النقر فوق الأحداث ... أصبح مربع الاختيار الآن غير قابل للنقر. يمكنك التقاط حدث "التغيير" ومعرفة أنه يحاول العمل كما هو متوقع ولكن يتم التراجع عنه بعد كل مرة. زوجان يعبثان أدناه:

يعمل كما هو متوقع ....
http://jsfiddle.net/yp128r1e/

لا ...
http://jsfiddle.net/yp128r1e/1/

Bug

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

بشكل افتراضي ، يمنع مساعد الإجراء الإجراء الافتراضي. في هذه الحالة ، هذا يعني أنه لن يتم تشغيل مربعات الاختيار. يمكنك تجاوز هذا عن طريق تعيين preventsDefault=false على المساعد. انظر http://jsfiddle.net/yp128r1e/3/.

ال 4 كومينتر

hilem هذه ليست في الواقع مشكلة مع جميع أنواع الأحداث. يبدو أن هناك مشكلة في النقر على وجه التحديد. أظن أن Ember يمنع سلوك الحدث الافتراضي الذي يعتبره المتصفح يعني أن خانة الاختيار يجب ألا تغير الحالة. لا أعتقد أن هذا خطأ. سيكون الحل هو عدم تطبيق معالج الإجراء بهذه الطريقة إذا كنت تريد أيضًا التعامل مع أشياء أخرى مثل مربعات الاختيار.

wagenet هذا نمط تصميم شائع جدًا. لتتمكن من النقر فوق أي مكان في الصف لتحديد صف وليس فقط مربع اختيار الصف. تمت إضافة مربع الاختيار فقط للتأكيد على أنه قابل للتحديد ولأسباب تتعلق بإمكانية الوصول وما تخبرني به هو أن الطريقة الوحيدة للتعامل معها هي في الأساس عدم استخدام مربع اختيار ولكن مزيف مربع اختيار بالصور أو أي شيء آخر. حيث لا توجد طريقة أخرى للتعامل مع هذا. وهو ما يضع الكثير من العبء على اختبار إمكانية الوصول الذي قد يكون جيدًا لولا ذلك. راجع للشغل ، هذه ليست مشكلة مع عناصر النموذج الأخرى. لقد اكتشفت هذا السلوك فقط من خلال مربع الاختيار. من الأمور الوحيدة التي يجب أن نقولها على Ember أن يتعامل مع هذه المشكلة لفترة من الوقت لأنه من الصعب للغاية التعامل مع الطريقة التي تتم بها هندسة الكود حاليًا ولكن لا أرى كيف يمكنك المجادلة بأن هذا ليس خطأ.

بشكل افتراضي ، يمنع مساعد الإجراء الإجراء الافتراضي. في هذه الحالة ، هذا يعني أنه لن يتم تشغيل مربعات الاختيار. يمكنك تجاوز هذا عن طريق تعيين preventsDefault=false على المساعد. انظر http://jsfiddle.net/yp128r1e/3/.

شكرا @ فاجينت !

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات