Handlebars.js: تعيين المتغيرات في القالب

تم إنشاؤها على ٢٩ مارس ٢٠١٣  ·  11تعليقات  ·  مصدر: handlebars-lang/handlebars.js

هل من الممكن تعيين متغير داخل قالب واستخدامه كمتغيرات من الخارج؟

مثال:
أريد إخراج جدول ، لكن عمود واحد اختياري ، يعتمد على البيانات (الحقول []. field2) موجودة أم لا.

في كل صف لا توجد مشكلة في التحقق ، ولكن كيف تتحقق من العنوان؟

<table>
  <thead>
    <tr>
      <th>Head 1</th>
      <th>Head 2 (optional)</th>
      <th>Head 3</th>
    </tr>
  </thead>
{{#each fields}}
  <tr>
    <td>{{{field1}}}</td>
    {{#if field2}}<td>{{{filed2}}}</td>{{/if}}
    <td>{{{field3}}}</td>
  </tr>
{{/each}}
</table>

في الوقت الحالي ، أستخدم وظيفة مساعد غير ثابتة "تعيين" والتي تنشئ مساعدين.

{{#each fields}}
  {{#if field2}}
    {{assign "helperVar" "<th>Head 2 (optional)</th>"}}
  {{/if}}
{{/each}}

Output with: {{{helperVar}}}

لكن هذا ليس حلاً جيدًا ولا يمكنني استخدامه في #if.

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

: +1:

kpdecker يمكن أن يكون لدينا حلقات وعبارات if وعدد من التركيبات المنطقية الأخرى في القوالب. ولكن من الواضح أن تخصيص متغير هو الكثير من المنطق في القوالب؟ لا أفهم حقًا السبب وراء هذا القرار عندما يحتوي المساعدون الافتراضيون الآخرون على منطق أكثر من مجرد امتلاك القدرة على تعيين متغير.

ال 11 كومينتر

هذا يتعارض مع فرضية القوالب غير المنطقية ولا أعتقد أن هذا يجب أن يكون بناء على مستوى اللغة.

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

template({
  fields: fields,
  hasField2: _.any(fields, function(item) { return item.field2; })
});

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

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

+1

+1

: +1:

: +1:

kpdecker يمكن أن يكون لدينا حلقات وعبارات if وعدد من التركيبات المنطقية الأخرى في القوالب. ولكن من الواضح أن تخصيص متغير هو الكثير من المنطق في القوالب؟ لا أفهم حقًا السبب وراء هذا القرار عندما يحتوي المساعدون الافتراضيون الآخرون على منطق أكثر من مجرد امتلاك القدرة على تعيين متغير.

+1

+1

+1

+1

يمكن تنفيذ شيء ما على طول هذه الخطوط باستخدام معلمات الكتلة ويتم توثيقه هنا:
http://handlebarsjs.com/block_helpers.html#block -params

نظرًا لأن هذا يتم في مساحة اسم منفصلة خارج السياق الحالي ، فإنه يوفر سلوكًا أكثر اتساقًا على تعيين السياق.

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