গোঁফ একটি শীর্ষ স্তরের অ্যারের পুনরাবৃত্তি করতে পারে?


109

আমার অবজেক্টটি এমন দেখাচ্ছে:

['foo','bar','baz']

এবং এ থেকে কিছু তৈরি করতে আমি গোঁফ টেম্পলেট ব্যবহার করতে চাই:

"<ul><li>foo</li><li>bar</li><li>baz</li></ul>"

কিন্তু কিভাবে? আমাকে কি সত্যিই প্রথমে এ জাতীয় কিছুতে পরিণত করতে হবে?

{list:['foo','bar','baz']}

উত্তর:


169

আপনি এটি এইভাবে করতে পারেন ...

Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>', ['foo','bar','baz']);

এটি এই জাতীয় জিনিসগুলির জন্যও কাজ করে ...

var obj = [{name: 'foo'}, {name: 'bar'}];
var tmp = '<ul>{{#.}}<li>{{name}}</li>{{/.}}</ul>';
Mustache.render(tmp, obj);

2
প্রকৃতপক্ষে টেমপ্লেটটি প্রথম আসে: Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
কাই কার্ভার

আমি কীভাবে পেতে পারি, উদাহরণস্বরূপ, অ্যারের ২ য় উপাদান? আমি গোঁফ.জেএস এবং এটি কাজ করছে না দিয়ে {{.1} do করার চেষ্টা করছি।
তুমিলিহা

এনএম, এটি বুঝতে পেরেছেন: আপনি কেবল বিন্দুগুলি উপেক্ষা করতে পারেন: তাই {{1}} বা আপনি যদি লজিকাল চেক করতে চান তবে {{# 1}} যাই হোক না কেন {{/ 1}}
থুইলিহ

8
এই বৈশিষ্ট্যগুলি কোথাও নথিভুক্ত করা হয়? আমি দেখতে পাচ্ছি না {{.}}, {{1}}অথবা গোঁফ (5) অনুরূপ কিছু।
ড্যানিয়েল লুবারভ

দ্রষ্টব্য: শীর্ষ স্তরের অ্যারে হোগান দ্বারা সমর্থিত নয়: github.com/twitter/hogan.js/issues/74 । : একটি সম্পত্তি সঙ্গে সমাধান ব্যবহার stackoverflow.com/a/8360440/470117
MEMs

115

আজ সকালে আমার একই সমস্যা ছিল এবং আমি একটি অল্প পরীক্ষার পরে আবিষ্কার করেছি আপনি একটি অ্যারের বর্তমান উপাদানটি উল্লেখ করতে {{।} Use ব্যবহার করতে পারেন:

<ul>
  {{#yourList}}
  <li>{{.}}</li>
  {{/yourList}}
</ul>

1
# আপনারলিস্ট ভেরিয়েবলের নামটি কোথা থেকে এসেছে? আপনি প্রকৃত রেন্ডারিংয়ের একটি জাভাস্ক্রিপ্ট নমুনা দেখাতে পারেন?
iwein

3
এমনকি আপনার "আপনার তালিকা" ব্যবহার করার দরকার নেই, আপনি কেবল "ব্যবহার করতে পারেন"। এখানেও: Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);
কাই কার্ভার

জাভাস্ক্রিপ্টটি হবে Mustache.render('<ul>{{#.}}{{.}}{{/.}}</ul>', {yourList: ['foo','bar','baz']});
ড্যান জর্ডান

1
দ্রষ্টব্য, আপনি যদি কম-পঠনযোগ্য টেম্পলেট চান তবে এটি করুন। গৃহীত উত্তর, "প্রয়োজনীয়" না হলেও এটি আরও পঠনযোগ্য সমাধান।
টিমোকসলে

7
কেউ কি জানেন যে কেন এই তথ্য নথি থেকে অনুপস্থিত? গোঁফ.github.io/mustache.5.html
জোশ

5

@ ডানজর্ডানের উত্তরে বিল্ডিং করা, এটি আপনি যা চান তা করবে:

Mustache.render('<ul>{{#.}}<li>{{.}}</li>{{/.}}</ul>',['foo','bar','baz']);

ফিরে:

<ul><li>foo</li><li>bar</li><li>baz</li></ul>

এটি কেবল অ্যারেগুলির পক্ষে আপত্তিগুলির জন্য নয়, অসম্ভব পক্ষে কাজ করে {a:'foo',b:'bar',c:'baz'}... অবজেক্টগুলির উপর পুনরাবৃত্তি করার সময় বেনামে রেফারেন্স কীভাবে করবেন?
পিটার ক্রাউস

1

একটি টেমপ্লেটে বহু-মাত্রিক অ্যারে রেন্ডার করার উদাহরণগুলি নীচে:

উদাহরণ 1

'use strict';

var Mustache = require('mustache');

var view = {test: 'div content', multiple : ['foo', 'bar'], multiple_2 : ['hello', 'world']};
var template = '<div>{{test}}</div><ul>{{#multiple}}<li>{{.}}</li>{{/multiple}}</ul><ul>{{#multiple_2}}<li>{{.}}</li>{{/multiple_2}}</ul>';

var output = Mustache.render(template, view);

console.log(output);

উদাহরণ 2

'use strict';

var Mustache = require('mustache');

var view = {test: 'div content', multiple : [{name: 'foo', gender: 'male'}, {name: 'bar', gender: 'female'}], multiple_2 : [{text: 'Hello', append: '**', prepend: '**'}, {text: 'World', append: '**', prepend: '**'}]};
var template = '<div>{{test}}</div><ul>{{#multiple}}<li>Hello my name is {{name}}. And I am {{gender}}</li>{{/multiple}}</ul><ul>{{#multiple_2}}<li>{{prepend}}_{{text}}_{{append}}</li>{{/multiple_2}}</ul>';

var output = Mustache.render(template, view);

console.log(output);

পরীক্ষা চালানোর জন্য, 'test.js' নামক ফাইলটিতে উপরের উদাহরণগুলি সংরক্ষণ করুন, কমান্ডলাইনে নিম্নলিখিত কমান্ডটি চালান

nodejs test.js

-1

আমার মনে হয় না গোঁফ এটা করতে পারে! (আশ্চর্যরূপে) আপনি অবজেক্টগুলির একটি তালিকা ধরে পুনরাবৃত্তি করতে পারেন, এবং তারপরে প্রতিটি বস্তুর বৈশিষ্ট্য অ্যাক্সেস করতে পারেন, তবে আপনি মানগুলির একটি সহজ তালিকাতে পুনরাবৃত্তি বলে মনে করতে পারবেন না!

সুতরাং, আপনাকে নিজের তালিকাটি এতে রূপান্তর করতে হবে:

[ {"value":"foo"},{"value":"bar"},{"value":"baz"} ] 

এবং তারপরে আপনার টেমপ্লেটটি হ'ল:

<ul>
  {{#the_list}}
  <li>{{value}}</li>
  {{/the_list}}
</ul>

আমার কাছে এটি গোঁফের সাথে একটি গুরুতর সমস্যার মতো বলে মনে হচ্ছে - যে কোনও টেম্পলেট সিস্টেমটি সাধারণ মানের একটি তালিকাতে লুপ করতে সক্ষম হওয়া উচিত!


4
আপনার কেবলমাত্র {{।} Use ব্যবহার করা উচিত} আমার উত্তর নীচে দেখুন।
অ্যান্ডি হাল

2
ডাউন-ভোটগুলি বিভ্রান্তিকর। এই উত্তরটি {{। In in এ সঠিক the the গোঁফ মানের অংশ নয়, যদিও এটি কিছু বাস্তবায়ন দ্বারা সমর্থিত। এটি করার মতো কোনও পোর্টেবল উপায় নেই।
ইয়েফু

এটি একদম ঠিক, এবং বহুমাত্রিক রেন্ডারিংয়ের জন্য খুব দরকারী। দয়া করে নীচের হিসাবে আমার উদাহরণটি সন্ধান করুন
ভূপেন্দ্র কেশওয়ানি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.