handlerbars.js তালিকা খালি কিনা তা পরীক্ষা করে দেখুন


122

হ্যান্ডলিবার্স.জেসের তালিকা বা সংগ্রহের মাধ্যমে এবং পুনরাবৃত্ত হওয়ার আগে সংগ্রহ বা তালিকাটি বাতিল বা খালি কিনা তা পরীক্ষা করে দেখার জন্য কোনও উপায় আছে?

// if list is empty do some rendering ... otherwise do the normal
{{#list items}}

{{/list}}



{{#each items}}

{{/each}}

উত্তর:


209

"প্রতিটি" ট্যাগ একটি "অন্য" বিভাগও নিতে পারে। তাই সহজ ফর্মটি হ'ল:

{{#each items}}
// render item
{{else}}
// render empty
{{/each}}

এটি দুর্দান্ত, তবে প্রশ্নের উত্তর দেয় না। আপনি যদি কোনও ট্যাগ মোড়ানোর জন্য চান তবে একটি ট্যাগের #eachমতো <ul>( <li>ভিতরে থাকা), আপনি চান না যে শূন্য অবস্থাটি দ্বারা মোড়ানো হোক <ul>
লিওনার্দো রাইলে

236

আপনার যদি এমন কিছু থাকে যা আপনি একবারে প্রদর্শন করতে চান এবং কেবল অ্যারেতে ডেটা থাকলে তা ব্যবহার করুন

{{#if items.length}}
    //Render
{{/if}}

.length খালি অ্যারেগুলির জন্য 0 প্রদান করবে যাতে আমরা একটি সত্য মিথ্যা মান অর্জন করেছি।


1
উভয় উত্তর সঠিক এবং কাজ, এবং তারা প্রশ্নের উত্তর। অ্যারেতে কোনও ডেটা না থাকলে কীভাবে কিছু প্রদর্শন করা যায়। প্রায় অন্য উপায় না.
Drejc

15
না আমি রাজি নই, এটি সঠিক উত্তর। এটিতে লুপের জন্য অন্তর্ভুক্ত নেই।
র‌্যাডটেক

4
সাধারণ কেস: আমি তালিকার প্রতিটি আইটেমের জন্য <ul>একবার একটি <li>ট্যাগ এবং একটি ট্যাগ রেন্ডার করতে চাই । যদি তালিকাটি খালি থাকে তবে আমি এমনকি <ul>রেন্ডার করতে চাই না , এবং এর <p>empty list<p>অভ্যন্তরের মতো অন্য কোনও কিছু উপস্থাপন করার <ul>কোনও অর্থ হয় না।
ফুয়াদ সৌদ

2
এই উত্তর বাস্তবায়ন নির্দিষ্ট। Handlebars ডক্স উল্লেখ []মিথ্যা হিসাবে মূল্যায়ন করা হয়। @ ড্রেজসি-র উত্তর হ্যান্ডেলবারের নির্দিষ্টকরণের দ্বারা সঠিক উত্তর।
স্টিম

1
আপনাকে ধন্যবাদ রেডিহেল্পারের চেয়ে উপায় ভাল সমাধান
ড্যানিশ

38

ঠিক আছে, আমি যা ভাবি তার চেয়ে সহজ:

{{#if items}}
// render items

{{#each items}}
// render item
{{/each}}

{{else}}
// render empty
{{/if}}

5
যদি itemsখালি অ্যারে হয় (অর্থাত্ এর মান থাকে []) তবে এটি সত্যবাদী মান উত্পন্ন করবে। যেখানে items.lengthখালি অ্যারের জন্য একটি ভুয়া মান উত্পাদন করে। দেখুন @ ডুয়ান এর উত্তর
গুলফ্লাম

হু ... এর পরে 3 বছর কেটে গেছে ... এটি সম্ভবত বাস্তবায়ন পরিবর্তিত হয়েছে বা আমার সাধারণের অ্যারের কোনও মামলা নেই। যতদূর আমি স্মরণ করি এটি আমার পক্ষে কাজ করেছিল।
Drejc

12
তুমি ঠিক বলছো. আমি preemptively নেটিভ জাতীয় এর 'আচরণের উপর ভিত্তি করে মন্তব্য করেছে if, কিন্তু handlebars ডকুমেন্টেশন খুব স্পষ্ট: "তার যুক্তি আয় তাহলে false, undefined, null, "", 0, অথবা [], handlebars ব্লক রেন্ডার হবে না।" আমার আগে ডক্সটি পরীক্ষা করা উচিত ছিল।
গুলফ্লাম

8

আপনি যদি কোনও সংগ্রহ (কার্সার) খালি কিনা তা পরীক্ষা করতে চান তবে আগের উত্তরগুলি কার্যকর হবে না, পরিবর্তে আপনাকে অবশ্যই এই count()পদ্ধতিটি ব্যবহার করতে হবে :

{{#if items.count}}
    <p>There is {{items.count}} item(s).</p>
{{else}}
    <p>There is nothing</p>
{{/if}}

2
@ বেসিক ওল্ফ এটি ব্যবহার করে না, কার্সার দিয়ে গণনা কাজ করে, যদি আপনার পরিবর্তে অ্যারের ব্যবহারের দৈর্ঘ্য থাকে।
কার্ল.এস

এটি একটি অ্যারে এবং কোনও অবজেক্টের মধ্যে যাচাই করতে এবং এগুলি অন্যরকমভাবে পরিচালনা করতে দুর্দান্ত কাজ করে।
রায়ান ওয়ালটন

2

যে কারও জন্য if if # আইফ}} এর উপরে একটি ea op #each} use ব্যবহার করা প্রয়োজন (যেমন লুপের জন্য একটি যদি লুপ থাকে)। তারা অ্যারে তিনটি পৃথক তালিকা আছে।

যদি একটি বিবৃতিটির ভিতরে একটি অনুসন্ধান ব্যবহার আমার জন্য সমস্যাটি সমাধান করে। হিসাবে, উপরের উত্তরগুলি আমার সমস্যাটির সমাধান করেনি।

এখানে আমার কোড,

{{#each OtherRandomItems}}

  {{this}}

  {{lookup ../AnotherRandomItems @index}}

  {{#if (lookup ../RandomItems @index)}}
  // render items
  {{else}}
  // render empty
  {{/if}}

{{/each}}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.