2012-10-02 20 views
9

के गुणों से बंधे हैं मुझे किसी ऑब्जेक्ट को कुछ HTML को बांधने की आवश्यकता है, लेकिन मेरी समस्या यह है कि मैं विकास समय पर ऑब्जेक्ट के गुणों को नहीं जानता।नॉकआउट जेएस ऑब्जेक्ट

<div data-bind="with: selectedItem"> 

</div> 

अब मैं संपत्ति नाम और संपत्ति मूल्यों के आधार पर तालिका जनरेट करना चाहते हैं:

मैं अपने मुख्य दृश्य मॉडल में एक selectedItem संपत्ति जो मैं अपने HTML में एक वर्ग के लिए बाध्य किया है

<div data-bind="foreach: [WHAT DO I PUT HERE?]"> 
    <label class="control-label"><span data-bind="text: [OR HERE?]" /></label> 
</div> 

मुझे वास्तव में यह नहीं पता कि यह कैसे करना है। कोई भी मदद बहुत ही सराहनीय होगी।

इसके अलावा, बस थोड़ा विस्तार करने के लिए, मैं बाध्य वस्तु के गुणों को अलग-अलग संभालना चाहता हूं, जैसे कि अगर संपत्ति सिर्फ एक आदिम प्रकार है, तो बस इसे आउटपुट करें, लेकिन यदि इसकी दूसरी वस्तु/सरणी है, तो हैंडल करें यह विशेष रूप से।

क्या यह किया जा सकता है?

उत्तर

4

Here डेटा दिखाने के लिए रनटाइम पर चयन करने के लिए गणना की गई का उपयोग कर एक कामकाजी उदाहरण है। गतिशील रूप से चयनित templates का उपयोग डेटा के प्रकार (सरणी या स्केलर) के अनुसार डेटा प्रस्तुत करने के लिए भी किया जाता है।

+0

यह एक अच्छी शुरुआत है जोड़ने के लिए इसका उपयोग कर सकते हैं, लेकिन मैं असफल यह देखने के लिए कि यह मुझे व्यूमोडेल के गुणों तक कैसे पहुंच देगा जो मुझे डिज़ाइन समय पर नहीं पता है। क्या आप विस्तार से बता सकते हैं? – Mark

+1

ज़रूर। संपत्ति "चयनित" में व्यूमोडेल में चयन करने के लिए संपत्ति का नाम शामिल है (रनटाइम पर बदला जा सकता है)। इस मान को बदलने (देखने योग्य) संपत्ति "डेटा" (गणना योग्य) के अद्यतन को ट्रिगर करेगा। यह अंतिम संपत्ति संबंधित टेम्पलेट का उपयोग करके प्रस्तुत करने के लिए डेटा (सूची 1 या आइटम 1) को गतिशील रूप से चुनता है (देखें [चयन] _)। उम्मीद है कि यह उदाहरण स्पष्ट करता है। – gbs

+0

आह, मैं देखता हूं कि आपने क्या किया है, धन्यवाद। लेकिन शायद मैं आपके विचारों को याद कर रहा हूं, या शायद मैंने इस मुद्दे को काफी अच्छी तरह से वर्णित नहीं किया है। मैं मॉडल क्लास में एक्स गुण हैं (आपके मामले में 2 लेकिन मेरा लगभग 20 है), मैं सभी गुणों को सूचीबद्ध करना चाहता हूं और उस संपत्ति के प्रकार के आधार पर एक टेम्पलेट चुनना चाहता हूं। आपके उदाहरण में, आपने चयन सूची में गुणों को कड़ी मेहनत की है, जहां मैं उन्हें नहीं जानता ... क्या यह समझ में आता है? – Mark

13

यदि कोई और साधारण वस्तु के गुणों को बांधने की तलाश में है। आप इसे इस तरह कर सकते हैं ...

<table> 
    <tbody data-bind="foreach: arrayOfObjects"> 
     <tr data-bind="foreach: Object.keys($data)"> 
      <td data-bind="text: $parent[$data]"></td> 
     </tr> 
    </tbody> 
</table> 

ध्यान दें: object.keys पुराने ब्राउज़र में समर्थित नहीं है, लेकिन आप पीछे की ओर संगतता http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation

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