2013-08-18 6 views
7

मुझे आश्चर्य है कि इस प्रकार की समस्या का कोई आसान समाधान है या नहीं।ng-repeat नेस्टेड तत्वों की अज्ञात संख्या

मेरे पास एक ऑब्जेक्ट टिप्पणी है, जिसमें बदले में टिप्पणियां हो सकती हैं, और उन टिप्पणियों में टिप्पणियां भी हो सकती हैं ... और यह अज्ञात संख्या के चक्रों के लिए जा सकती है।

var comment = { 
    text : "", 
    comments: [ 
     { text: "", comments : []}, 
     { text: "", comments: [ 
     { text: "", comments : []}, 
     { text: "", comments : []} 
     { text: "", comments : []} 
     ]} 
    ] 
} 

चलें टिप्पणियों के 2 स्तरों के लिए कहते हैं कि मैं ने लिखा है:

<div ng-repeat="comment in comments"> 
    {{comment.text}} 
    <div ng-repeat="comment in comments"> 
     {{comment.text}} 
    </div> 
</div> 

मैं कैसे की "n" स्तर के लिए मेरे divs implent हैं

यहाँ डेटा संरचना का एक उदाहरण है नेस्टेड टिप्पणियां?

उत्तर

9

एक सामान्य आंशिक बनाने का सबसे आसान तरीका है ताकि आप ng-include का उपयोग कर इसे फिर से कॉल और प्रस्तुत कर सकें।

<div ng-include="'partialComment.html'" ng-model="comments"></div> 

यहाँ आंशिक है:

<ul> 
    <li ng-repeat="c in comments"> 
     {{c.text}} 
     <div ng-switch on="c.comments.length > 0"> 
     <div ng-switch-when="true"> 
      <div ng-init="comments = c.comments;" ng-include="'partialComment.html'"></div> 
     </div> 
     </div> 
    </li> 
</ul> 

डाटा मॉडल एक सूची var comments = [{ ... }] होना चाहिए।

मैंने आपके लिए एक डेमो बनाया और उम्मीद है कि इससे मदद मिलती है।

Demo

+0

रिकर्सन में पहले सेट को छोड़कर सभी तत्वों को छिपाने का कोई तरीका होगा? – guiomie

+0

@ गुइओमी आप एनजी रिपेटर में $ पहला पैरामीटर देख सकते हैं। – zsong

+0

मेरा मतलब है कि उन सभी तत्वों को छुपा रहा है जो पहले सरणी में नहीं हैं, प्रत्येक सरणी के पहले तत्व नहीं हैं। तो केवल पहले टिप्पणियों के सरणी के तत्व छिपे नहीं हैं ... – guiomie

1

आपको एक पुनरावर्ती निर्देश की आवश्यकता है। this की तरह कुछ, या शायद बेहतर this

+0

[gistflow] (http://gistflow.com/posts/843-creating-recursive-templates-in-angular-js) लिंक मर चुका है। –

संबंधित मुद्दे