2015-07-10 8 views
8

में पासिंग बच्चों घटकों के लिए पैरामीटर मैं एक टेम्पलेट तो मुझे यह करने की ज़रूरत नहीं है?नॉकआउट

<ul class="item-list" data-bind="foreach: items"> 
    <item params="title: title, 
       $element: $element, 
       $data: $data, 
       $parent: $parent"></item> 
</ul> 

बल्कि कुछ की तरह:

<item params="$context"></item> 

मैं नॉकआउट के लिए नया हूँ। मुझे पता है कि मैं ऑब्जेक्ट को व्यू मॉडल में पास कर सकता हूं और उस ऑब्जेक्ट पर काम कर सकता हूं, इसलिए this.title के बजाय मुझे this.object.title या this.$data.title करना होगा और मुझे अभी भी $element और $parent मैन्युअल रूप से पास करना होगा।

क्या यह याद करने का कोई और तरीका है कि मुझे याद आ रही है?

<item params="{ context: $context }"></item> 

फिर घटक कोड में:

+0

इस सरल मामले में देखें क्यों तुम सब पर घटकों को अलग हैं? – connexo

+0

मैं सिर्फ नॉकआउट के साथ खेल रहा हूं, यह एक समस्या है जिसे मैं पार कर गया, यह जरूरी नहीं कि असली दुनिया है। – falafel99

उत्तर

6

आप $context इस प्रकार पारित कर सकते हैं

viewModel: function(params) { 
    var ctx = params.context; 
    var itemData = ctx.$data; 
    $.extend(this, itemData) 
}, 

लेकिन, आप सब पर संदर्भ का इस्तेमाल कर रही हो रहे हैं नहीं है, आप ' पास item डेटा के साथ केवल this का विस्तार कर रहा है। तो, निम्नलिखित के रूप में अच्छा प्रदर्शन करेंगे:

<item params="{ item: $data }"></item> 

viewModel: function(params) { 
    $.extend(this, params.item) 
}, 

, Fiddle