একটি হ্যান্ডেলবার্স 'প্রতিটি' লুপ দিয়ে পিতামাতার বৈশিষ্ট্যগুলিতে অ্যাক্সেস করুন


204

নিম্নলিখিত সরলীকৃত ডেটা বিবেচনা করুন:

var viewData = {
    itemSize: 20,
    items: [
        'Zimbabwe', 'dog', 'falafel'
    ]
};

এবং একটি হ্যান্ডলবারস টেমপ্লেট:

{{#each items}}
    <div style="font-size:{{itemSize}}px">{{this}}</div>
{{/each}}

এটি কাজ করবে না কারণ eachলুপের মধ্যে, প্যারেন্ট স্কোপটি অ্যাক্সেসযোগ্য নয় - অন্তত আমি যেভাবে চেষ্টা করেছি সেভাবে নয়। আমি আশা করছি যে এটি করার একটি উপায় আছে যদিও!

উত্তর:


423

এটি অর্জনের দুটি বৈধ উপায় আছে।

এর সাথে পিতামাতাদের স্কোপটি অবৈধ ../

../সম্পত্তির নামটি শোধ করে আপনি পিতামাতার সুযোগটি উল্লেখ করতে পারেন।

{{#each items}}
    <div style="font-size:{{../itemSize}}px">{{this}}</div>
    {{#if this.items.someKey}}
       <div style="font-size:{{../../itemSize}}px">{{this}}</div>  
    {{/if}}
{{/each}}

আপনি পুনরাবৃত্তি করে একাধিক স্তরে যেতে পারেন ../। উদাহরণস্বরূপ, দুটি স্তরের ব্যবহার ব্যবহার করুন ../../key

আরও তথ্যের জন্য, পাথগুলিতে হ্যান্ডলবার্স ডকুমেন্টেশন দেখুন ।

এর সাথে মূল স্কোপটি ডিগ্রি করুন @root

Prepending দ্বারা @rootসম্পত্তি পথে, আপনি আগ সুযোগ (যেমন দেখানো থেকে নীচের দিকে নেভিগেট করতে পারেন caballerog এর উত্তর )।

আরও তথ্যের জন্য, @ ডেটা ভেরিয়েবলগুলিতে হ্যান্ডলবার্স ডকুমেন্টেশন দেখুন ।


101
পিতামাতাদের বৈশিষ্ট্য পেতে .. / ব্যবহার করার জন্য কেবল একটি নোট। যদি আপনার প্রতিটি বিবৃতি যদি নেস্টেড #f এর সাথে থাকে তবে কেবল .. / করছেন কেবলমাত্র আপনাকে # স্তরের স্তরে পৌঁছে দেবে। সুতরাং আপনাকে করতে হবে ../../itemSize #each
TheStoneFox

1
গোঁফ.জেএস টেম্প্লেটিং ইঞ্জিনে আমি এই কার্যকারিতাটি কীভাবে পেতে পারি?
blushrt

2
@ ব্লুশ্র্ট আপনি করবেন না এটি হ্যান্ডেলবার্স নির্দিষ্ট
19

3
@ দ্য টেক্সপায়ার আপনি কেবল আমাকে একটি প্রচুর মাথা ব্যাথার হাত থেকে বাঁচিয়েছেন! আপনার মোজা দিয়ে রক করুন :)
পিটার পি।

4
ওপেন লেভেল # এচ মানটিকে কোনও সহায়তায় পরিণত করার বিষয়ে
ওলেগ

60

নতুন পদ্ধতিটি ডট স্বরলিপি ব্যবহার করছে, স্ল্যাশ স্বরলিপিটি হ্রাস করা হয়েছে ( http://handlebarsjs.com/expressions.html )।

সুতরাং, পিতামাতার উপাদানগুলিতে অ্যাক্সেসের আসল পদ্ধতিটি নিম্নলিখিত:

@root.grandfather.father.element
@root.father.element

আপনার নির্দিষ্ট উদাহরণে, আপনি ব্যবহার করবেন:

{{#each items}}
 <div style="font-size:{{@root.viewData.itemSize}}px">{{this}}</div>
{{/each}}

অফিসিয়াল ডকুমেন্টেশনের অন্য একটি পদ্ধতি ( http://handlebarsjs.com/builtin_helpers.html ) উপনাম ব্যবহার করছে

প্রতিটি সাহায্যকারী ব্লক প্যারামিটারগুলি সমর্থন করে, ব্লকের যে কোনও জায়গায় নামকরণ করা রেফারেন্সের জন্য অনুমতি দেয়।

{{#each array as |value key|}}  
 {{#each child as |childValue childKey|}}
     {{key}} - {{childKey}}. {{childValue}}   
 {{/each}} 
{{/each}} 

একটি কী এবং মান ভেরিয়েবল তৈরি করবে যা ডিপড ভেরিয়েবল রেফারেন্সের প্রয়োজন ছাড়াই বাচ্চারা অ্যাক্সেস করতে পারে। উপরের উদাহরণে, {{কী}}> {{@ .. / কী}} এর সাথে সমান, তবে অনেক ক্ষেত্রে বেশি পঠনযোগ্য।


1
আমার জন্য এক স্তর উপরে গিয়ে "@ root.itemSize" ব্যবহার করে কাজ করেছেন।
স্যাম টাইসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.