شكرا denisnazarov لتتبع هذا واحد.
بينغ سينور @ ماتشتي
machty يمكننا استخدام مساعدتك في هذا الأمر
لذا بعد أن عانيت الليلة الماضية ، لست متأكدًا من أن هذا أمر غير مرغوب فيه تمامًا. لنفترض أن لديك وحدة التحكم التالية.
App.MyController = Ember.Controller.extend({
queryParams: ['filters'],
filters: ['starred']
});
إذا قمت بتعيين filters
إلى null
وقمت بتحديث الصفحة ، فما هو السلوك المتوقع؟ إذا لم تقم بتجميع null
في عنوان url ، فسيتم تعيين خاصية وحدة التحكم على قيمتها الافتراضية.
هذا مشابه لمشكلة التطبيق السابق التي كانت غامضة بين القيم الخاطئة والقيمة الفعلية للخطأ. الآن يبدو الأمر غامضًا بين defaultValue
و null
أو undefined
.
إليك مثال آخر باستخدام معلمات الاستعلام المنطقية: http://emberjs.jsbin.com/hamev/2/edit
إذا تم تعيين القيمة الافتراضية على null
، فإن تعيينها على true
أو false
يعينها بالفعل على إصدار السلسلة ، 'true'
أو 'false'
.
HeroicEric إذن ما السبب المقنع null
إذا كان في حياته سيكون هو true
/ false
؟
قد يكون هذا خطأ. أشعر بالفضول فقط لمعرفة ماهية حالات الاستخدام لجميع حالات ركن التسلسل هذه.
machty حاولت إظهار مثال لحالة الاستخدام في jsbin.
على سبيل المثال ، أعرض قائمة بالمستخدمين وأريد أن أكون قادرًا على تصفيتهم بحيث تحتوي القائمة على كل المستخدمين أو المستخدمين المسؤولين أو المستخدمين غير المسؤولين. عندما أرغب في رؤية جميع المستخدمين ، سأقوم في الأساس بإزالة الفلتر.
هل مثل هذه المواقف ليست ما تعنيه معلمات الاستعلام؟
من الناحية المثالية ، ستكون عناوين URL شيئًا من هذا القبيل:
/ يظهر
/ المستخدمين؟ admin = true يظهر جميع المسؤولين
/ المستخدمين؟ admin = false يظهر جميع المستخدمين الذين ليسوا مشرفين
HeroicEricmachty أعتقد أن الفكرة كانت أنه إذا كان القيمة_الافتراضية على وحدة تحكم لم يتم تعريف ( null
أو undefined
) أنه الافتراضي إلى استخدام السلاسل. هذا من شأنه أن يفسر لماذا ينتهي الأمر true
و false
كإصدارات سلسلة منذ أن يتم تعيين التسلسل افتراضيًا إلى السلاسل.
أعتقد أنه إذا كنت تريد تعيين خاصية على null
فنحن بحاجة إلى الحصول على النوع من مكان آخر. machty هل سيكون هذا سببًا جيدًا queryParams
على المسار؟
إذا كان لدينا هذا ، فيمكنك تعيين النوع كـ 'boolean
'وتعيين الافتراضي إلى null
.
لدي مثال JSBin هذا ، وأتساءل عما إذا كان ما أراه مرتبطًا بهذه المشكلة:
http://jsbin.com/dipajezi/1/edit
في الأساس، ولدي هذا foo
استعلام المعلمات مع null
القيمة الافتراضية، وأول مرة يتم استدعاء لي هوك نموذج عند بدء تشغيل التطبيق، قيمة المعلمة null
. عندما تكون قيمة المعلمة null
، لا أريد استخدام هذه المعلمة للاستعلام عن الخادم ، لأنها تعني "لا قيمة".
الاستعلام: ?page=1
عندما أنقر على زر NextPage ، أنقل مرة أخرى ولكن هذه المرة قمت بتغيير معامل الاستعلام page
. هذه المرة تحتوي معلمة الاستعلام foo
على قيمة سلسلة "null"
، وهو نوع غريب. في هذه الحالة ، ما زلت أرغب في الحصول على قيمة null
، حتى أتمكن بسهولة من التحقق من أن المعلمة ليس لها قيمة.
الاستعلام: ?page=1
وليس ?page=1&foo=null
أخيرًا ، عندما أنقر على الزر ChangeFoo
، أقوم بالانتقال مرة أخرى ، هذه المرة معيّنة قيمة معلمة الاستعلام foo
لأي قيمة. الآن بما أن القيمة ليست فارغة ، يمكنني استخدام هذه القيمة لإنشاء سلسلة الاستعلام الخاصة بي.
الاستعلام ?page=1&foo=3
raytiley كتب للتو ملاحظة على https://github.com/raytiley/ember.js/commit/26a3f8569edb58f8644ce4f9cec7000276c327a6#diff -0631ecfe6138cf2c2eb2d94369c3e846R1640.
إذا قمت بتعيين qp إلى null
صراحة ، فسيتم تحويلها إلى سلسلة في خطاف النموذج. لا يبدو هذا صحيحًا ، نظرًا لأن null
يجب أن يمثل "بلا قيمة" ، وإذا كان الفرد يريد السلسلة الخالية ، فيمكنه إنشاؤها بناءً على القيمة null
.
خلاف ذلك ، إذا كنت تريد اجتياز QPs التي تحتوي على قيم فقط ، فعليك أن تفعل params.myQP && params.myQp !== "null"
..
أعتقد أن هذا قديم ولكن سيتم إعادة فتحه إذا تمكن شخص ما من إظهار المشكلة في JSBin الذي يستخدم ember.js التالي: http://s3.amazonaws.com/machty/to_s3_uploads/ember-9fbe6c2a-c124-5c2e-0414 -f5ed36c2a1a2.js
_ في حال وجد أي شخص ذلك عبر Google ._
تم حل المشكلة بشكل أساسي ، ولكن تظل حالة الحافة حيث إذا لم يتم تعيين معلمة الاستعلام على وحدة التحكم ، فستتسلسل null
إلى 'null'
.
var AnimalsController = Ember.Controller.extend({
queryParams: ['myCat']
// myCat: null // deliberately not set, to illustrate the issue
});
export default AnimalsController;
فيما يتعلق بحالة استخدام
export default Ember.Controller.extend({
queryParams: [{
redevelopment: {
type: 'boolean'
}
}],
redevelopment: null
});
منذ متى تسمح QPs بتحديد النوع؟ أم أنك تقترح فقط واجهة برمجة تطبيقات جديدة؟
يبدو أنه غير موثق. بالنظر هنا ، يبدو أنه يمكن تجاوزه.
اوه هذا لطيف!
شكرًا ، allthesignals ، إنه مفيد جدًا
ماذا عن هذا الحل؟
{ key: undefined }
إلى ?
_ (غير مشمول) _
{ key: null }
إلى ?key
{ key: '' }
إلى ?key=
{ key: 'null' }
إلى ?key=null
قائمة جيدة!
سأصوت لهذا:
{ key: undefined }
إلى [nothing]
_ (غير مشمول) _
{ key: null }
إلى [nothing]
_ (غير مشمول) _
{ key: '' }
إلى ?key
{ key: 'null' }
إلى ?key=null
وربما أيضًا:
{ key: false }
إلى [nothing]
_ (غير مشمول) _
{ key: true }
إلى ?key
التعليق الأكثر فائدة
_ في حال وجد أي شخص ذلك عبر Google ._
تم حل المشكلة بشكل أساسي ، ولكن تظل حالة الحافة حيث إذا لم يتم تعيين معلمة الاستعلام على وحدة التحكم ، فستتسلسل
null
إلى'null'
.