Handlebars.js: لا يمكن استخدام سلسلة من عدد صحيح كمعرف

تم إنشاؤها على ٢٧ يونيو ٢٠١١  ·  10تعليقات  ·  مصدر: handlebars-lang/handlebars.js

إنها ساعاتي الأولى في العمل مع المقود ، لذلك ربما فاتني شيء ما ، ولكن .....

مع بيانات مثل هذه: {الحالة: {"200": 4، "304": 10}} يبدو أنه لا يمكن الوصول إلى تلك الإدخالات مع تمثيل سلسلة من الأعداد الصحيحة كمفاتيح. هذا القالب لا يعمل معي (باستخدام حزمة 1.0.3beta):

{{# مع الحالة}}
{{#if 200}} مقبول: {{200}} {{/ if}}
{{/مع}}

ينتج عن {{200}} خطأ تحليل "معرف متوقع". يحدث الشيء نفسه عندما يحتوي القالب على: {{"200"}}. من الغريب أن {{#if 200}} يبدو أنه يعمل بشكل جيد.

bug

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

من الجيد معرفة أن الأقواس تساعد كحل بديل ، لكنني أردت أن أشير إلى أن هذا السلوك يكسر التوافق العكسي مع الشارب.

كان لدي قوالب شارب حيث يمكنني الوصول إلى عناصر المصفوفة عن طريق فهارس حرفية عن طريق كتابة:

{{someArray.0}}

ومع ذلك ، عندما حاولت ترحيل تطبيقي من الشارب إلى المقاود (على افتراض أن القوالب يجب أن تعمل جميعها) وجدت نفسي مع الكثير من الأخطاء

`` توقع 'ID' ، حصلت على 'INTEGER'``

لحسن الحظ ، تغيير تلك التعبيرات إلى

{{someArray.[0]}}

أصلح المشكلة. ربما يكون من المفيد توسيع نطاق اللغة قليلاً لدعم هذا الامتداد للتوافق مع الشارب.

شكرا

ال 10 كومينتر

في المقاود ، يتم ترميز الأعداد الصحيحة على أنها عدد صحيح. يمكنك جعل أي تسلسل من الأحرف يعمل من خلال إحاطةهم بين قوسين:

{{#with status}}
  {{#if [200] }} OK: {{ [200] }} {{/if}}
{{/with}}

من الجيد معرفة أن الأقواس تساعد كحل بديل ، لكنني أردت أن أشير إلى أن هذا السلوك يكسر التوافق العكسي مع الشارب.

كان لدي قوالب شارب حيث يمكنني الوصول إلى عناصر المصفوفة عن طريق فهارس حرفية عن طريق كتابة:

{{someArray.0}}

ومع ذلك ، عندما حاولت ترحيل تطبيقي من الشارب إلى المقاود (على افتراض أن القوالب يجب أن تعمل جميعها) وجدت نفسي مع الكثير من الأخطاء

`` توقع 'ID' ، حصلت على 'INTEGER'``

لحسن الحظ ، تغيير تلك التعبيرات إلى

{{someArray.[0]}}

أصلح المشكلة. ربما يكون من المفيد توسيع نطاق اللغة قليلاً لدعم هذا الامتداد للتوافق مع الشارب.

شكرا

santip أنا في حيرة من

أوو ، سيئ ، حسنًا ، كنت أستخدم hogan.js بالفعل ولم أكن أعرف أنه لم يكن مدعومًا على الشارب.

راجع للشغل ، عند الترحيل من hogan.js ، لاحظت أيضًا أن الفقاعات لا يبدو أنها تعمل تمامًا كما فعلت في hogan (أو الشارب):

Handlebars.compile('aaa {{a}} {{#b}}{{c}}{{d}}{{/b}}')({a:1, b:[{c:2}], d:3}) == 'aaa 1 2'

Hogan.compile('aaa {{a}} {{#b}}{{c}}{{d}}{{/b}}').render({a:1, b:[{c:2}], d:3}) == 'aaa 1 23'

Mustache.render('aaa {{a}} {{#b}}{{c}}{{d}}{{/b}}', {a:1, b:[{c:2}], d:3}) == 'aaa 1 23'

إنه يعمل عندما أستخدم ../ وهذا هو السبب الذي جعلني أتحول إلى المقاود ولكنني اعتقدت أن الأمر يستحق الإشارة إلى عدم التوافق هناك.

كما أنني اختبرت الشارب ويبدو أنه يدعم المسارات

Mustache.render('aaa {{a}} {{b.c}}', {a:1, b:{c:2}, d:3}) == 'aaa 1 2'

نعم ، يدعم الشارب المسارات. تحقق من # الأسماء المنقطة في https://github.com/mustache/spec/blob/master/specs/sections.yml

يبدو أن الشارب قد أضاف ميزات. لست متأكدًا مما إذا قمت بالتسجيل لتتبع مواصفات Moustache إلى الأبد: /

لا يبدو أن مواصفات Mustache تصف سلوك .<integer> . يمكنني بالتأكيد إجراء هذا العمل ، على الرغم من أن المقاود foo.[anything] تعمل بشكل أفضل مع المسارات غير المعرفية.

كانت خطتي الأصلية "إذا كان مسار نقاط صالحًا في JS ، فإنه يعمل في المقاود".

هل هناك أي سبب يمنعك من دعم ترميز المسار .<integer> ؟

لا أعتقد أنه يجب عليك دعم الفقاعة لأنه من المحتمل أن يؤدي إلى كسر العديد من قوالب المقاود الحالية ، على الرغم من أنه من المحتمل أن تقوم بتحديث المستندات والموقع للإبلاغ عن حالات عدم التوافق هذه لتوفير بعض المتاعب للأشخاص الذين يقومون بالترحيل.

واجهت هذا عندما حاولت استخدام المعرفات في النموذج {{1}} ، والتي تجمع جيدًا في Moustache و Hogan ولكنها ترمي Expecting 'ID', 'DATA', got 'NUMBER' في المقاود. على الرغم من أنني أرغب في دعم الأعداد الصحيحة ، إلا أنني أفهم تمامًا وأؤيد نهج

ومع ذلك ، أعتقد أن المستندات يجب أن تعكس هذا. يقولون حاليًا:

Identifiers may be any unicode character except for the following:
Whitespace ! " # % & ' ( ) * + , . / ; < = > @ [ \ ] ^ ` { | } ~

وهو ما أعتقد أنه مضلل لأن الأعداد الصحيحة غير صالحة. من الواضح جدًا أن نقول "إذا كان مسار نقطي صالحًا في JS ، فإنه يعمل في المقاود" ، كما هو مقترح.

http://handlebarsjs.com/expressions.html

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