Angular.js: مرشح إدخال الرقم لا يعمل إذا مسحنا القيمة

تم إنشاؤها على ٢٦ نوفمبر ٢٠١٤  ·  5تعليقات  ·  مصدر: angular/angular.js

إذا مسحنا قيمة إدخال الرقم (اجعلها فارغة) ، فمن الأفضل عدم تطبيق عامل التصفية ويجب إدراج جميع القيم. في الوقت الحالي ، إذا طبقنا بعض المرشحات عن طريق وضع رقم ، فلنقل 5 في مربع الإدخال ، فإنه يعمل بشكل جيد ويتم سرد جميع البيانات المطابقة 5 أسفل. الآن إذا قمنا بمسح القيمة في مربع الإدخال ، فمن الأفضل أن يتم سرد جميع القيم (بدون مرشح) ولكن يطبق الزاوي مرشحًا فارغًا للأرقام ويتم تصفية كل شيء (لا يسرد ng-تكرار أي شيء).

نوع الإدخال = "رقم" ng-model = "العمر"

عامل التصفية: العمر

ملاحظة: لا توجد مشكلة في النوع = إدخال النص

forms low confusing bug

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

(كما ذكرت) يحدث هذا لأن input[number] يعين null للنموذج عندما يكون الحقل فارغًا.

توقع أن يعمل هذا بالطريقة التي تتوقعها هو أمر منطقي (imo) ، لكنني لست متأكدًا من كيفية معالجة هذا الأمر.
إصلاحه من جانب عامل التصفية غير مرغوب فيه ، لأن null يمكن أن يكون قيمة صالحة للبحث عنها (ولا يمكننا التعامل معها على أنها غير محددة). قد لا يكون إصلاحه على NgModelController حلاً قابلاً للتطبيق أيضًا.

@ الأخرين : خواطر؟

في غضون ذلك ، يمكنك استخدام هذا الحل البديل (ليس جميلًا جدًا):

<input type="number" ng-model="search.posts" />
...
<div ng-repeat="user in users | filter:((search.posts===null)?undefined:search)">...</div

كمان تجريبي

ال 5 كومينتر

(كما ذكرت) يحدث هذا لأن input[number] يعين null للنموذج عندما يكون الحقل فارغًا.

توقع أن يعمل هذا بالطريقة التي تتوقعها هو أمر منطقي (imo) ، لكنني لست متأكدًا من كيفية معالجة هذا الأمر.
إصلاحه من جانب عامل التصفية غير مرغوب فيه ، لأن null يمكن أن يكون قيمة صالحة للبحث عنها (ولا يمكننا التعامل معها على أنها غير محددة). قد لا يكون إصلاحه على NgModelController حلاً قابلاً للتطبيق أيضًا.

@ الأخرين : خواطر؟

في غضون ذلك ، يمكنك استخدام هذا الحل البديل (ليس جميلًا جدًا):

<input type="number" ng-model="search.posts" />
...
<div ng-repeat="user in users | filter:((search.posts===null)?undefined:search)">...</div

كمان تجريبي

نرجع null لأن إرجاع undefined من المحلل اللغوي يعيّن خطأ تحليل. سبب آخر يجعل هذا ليس أفضل تصميم.

Narretz كنت على وشك أن أسأل لماذا لا نعيد undefined :-)

أعلم أن هذا المنشور قديم نوعًا ما ، لكنني واجهت وقتًا سيئًا حقًا في معرفة كيفية حل هذه المشكلة ، لذلك أريد مشاركة الحل الخاص بي. أضف حدث oninput إلى حقل الإدخال الخاص بك وفي وظيفة javascript تحقق مما إذا كانت قيمة هذا الحقل عبارة عن سلسلة فارغة ، إذا كان الأمر كذلك ، فاحذف قيمة حقل الإدخال باستخدام:
احذف document.getElementById ("أيا كان"). value ؛

لا أعتقد أنه من المفترض أن تكون سمات HTMLInputElement قابلة للتكوين

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