هل من الممكن التكرار على أزواج المفتاح / القيمة للكائن؟
ضع في اعتبارك هذا المثال:
var values = {
'single': 'Single bed',
'double': 'Double bed',
'twin': 'Twin beds'
};
كود handlebar.js المكافئ:
<select name="bed_type">
{{#values}}
<option value="{{@key}}">{{this}}</option>
{{/values}}
</select>
لم أجد طريقة للقيام بذلك باستخدام mustache.js
شكرا.
مرحباchlab!
بدلاً من تمرير بياناتك مباشرة إلى العارض ، يجب عليك تنسيقها في كائن view
. أو استخدم المساعد المخصص. هناك بعض الأفكار حول سلاسل stackoverflow هذه:
http://stackoverflow.com/questions/9058774/handlebars-mustache-is-there-a-built-in-way-to-loop-through-the-properties-of
http://stackoverflow.com/questions/9981907/how-to-iterate-over-a-hash-in-mustache-js
أخبرنا إذا كان الأمر لا يزال غير واضح. هتافات!
شكراdasilvacontin.
تبدو هذه طريقة محرجة جدًا للقيام بذلك ، أليس كذلك؟ ما هو السبب وراء ذلك؟ ألن تكون طريقة المقود أبسط بكثير؟
هتافات
chlab هذا مبدأ أساسي من Moustache. يجب استخراج كل المنطق في طريقة عرض تختلف عن النموذج. في هذه الحالة ، يبدو الأمر أكثر صعوبة لأنه مجرد منطق بسيط ، ولكن هذا منحدر زلق لا يسمح لك موستاش بالهبوط فيه :)
عادل بما يكفي. شكرا على الشرح!
المبدأ الأساسي الذي تمت الإشارة إليه في الأصل ، يجعل Moustache شديد الرأي ، ولا أريد دائمًا ترتيب مرحلة تحويل منفصلة لجعل Moustache سعيدًا ...
هل السماح بالتكرار على كائن بسيط يقدم حقًا المنطق في عرض الشارب؟ ستكون حجتي لا. أنا معجب بمبدأ عدم المنطق ، لكن يمكننا بالفعل تكرار المصفوفات ، وأنا أتفق مع OP أن هذا أمر محرج بلا داع. خذ بعين الاعتبار المثال التالي:
أود أن تكون بياناتي:
"attr": {
"class": "foo",
"href": "/somewhere"
}
لكن يجب أن تكون:
"attr": [
{
"key": "class",
"value": "foo"
},
{
"key": "href",
"value": "/somewhere"
}
]
لتقديم:
<a{{#attr}} {{ key }}="{{ value }}"{{/attr}}></a>
أهلا يا أصدقاء،
كيف يمكنني تكرار قائمة مجهولة؟ حاولت استخدام {{#.}} و {{/.}} ولكن هذا لا يعمل.
شكرا
لتكرار قائمة مجهولة
let facts = doc.data();
res.render('index', {facts});
<ul>
{{#each facts}}
<li>Key: {{@key}} Value = {{this}}</li>
{{/each}}
</ul>
هل هناك شيء في هذا الموضوع هو رسمي؟
كيف يتم استخدام حقيقي لقائمة كائنات مجهولة مع أزواج مفتاح - قيمة؟
يرجى إظهار مثال حقيقي باستخدام الكائن المقترح ، var values = { 'single': 'Single bed', ...}
والمخرج المقترح للسؤال.
ملاحظة: @ prashantcs8 المثال الخاص بك هو حقيقي؟ لا يعمل.
chlab نحن في 2018 ... لا يوجد خيار في Moustache لاستخدام مراجع مجهولة؟
baseten ، about yor "لكن يجب أن يكون" أعلاه ، هذه هي المشكلة ، قبيح لفرض تحويلات بنية البيانات ...
إنه ليس حلاً أنيقًا ، لكني أستخدم res.render('index', objs2list(obj))
حيث ربما توجد طريقة مساعد Moustache لإجراء التحويل ،
function objs2list(p) {
r = [];
for (var key in p) if (p.hasOwnProperty(key)) {
r.push({"@key":key,"@val":p[key]});
}
return r;
}
يوجد؟
التعليق الأكثر فائدة
هل السماح بالتكرار على كائن بسيط يقدم حقًا المنطق في عرض الشارب؟ ستكون حجتي لا. أنا معجب بمبدأ عدم المنطق ، لكن يمكننا بالفعل تكرار المصفوفات ، وأنا أتفق مع OP أن هذا أمر محرج بلا داع. خذ بعين الاعتبار المثال التالي:
أود أن تكون بياناتي:
لكن يجب أن تكون:
لتقديم: