5

मैं नॉकआउट 3.2 और नई घटक प्रणाली का उपयोग कर रहा हूं। मैं उन घटकों को रखने की कोशिश कर रहा हूं जिनमें उप-घटक शामिल हैं।नॉकआउट 3.2 घटक डेटा संदर्भ

Home Page (component - with HomePageViewModel) NewsFeed1 (component with HomePageViewModel.NewsFeedViewModel1) NewsFeed2 (component with HomePageViewModel.NewsFeedViewModel2)

HomePageViewModel

var viewModel = (function() { 
    function viewModel() { 
     this.message = ko.observable("Welcome to DKT!"); 
     this.newsFeedViewModel = new gr.viewModel(); 
     this.newsFeedViewModel2 = new gr.viewModel(); 
     this.newsFeedViewModel.message("Message 1"); 
     this.newsFeedViewModel2.message("Message 2"); 
    } 
    return viewModel; 
})(); 

NewsFeedViewModel

var viewModel = (function() { 
    function viewModel() { 
     this.message = ko.observable("This is the profile!"); 
    } 
    return viewModel; 
})(); 

आप देख सकते हैं HomePageViewModel दोनों NewsFeedViewModel शामिल हैं। अब मैं इन दो घटकों के डेटाकॉन्टेक्स्ट/बाइंडिंग कॉन्टेक्स्ट के रूप में इन्हें उपयोग करने में सक्षम होना चाहता हूं लेकिन यह काम नहीं कर रहा है।

home.html

<news-feed data-bind="newsFeedViewModel"></news-feed> 
<news-feed data-bind="newsFeedViewModel2"></news-feed> 

इन दोनों घटकों HomePageViewModel से ViewModels का उपयोग नहीं करते लेकिन एक नए NewsFeedViewModel उपयोग करता है। मैं इन घटकों के डेटाकॉन्टेक्स्ट को दृश्य घटक से कैसे जोड़ सकता हूं शीर्ष मॉडल (घर) में संग्रहीत मॉडल?

उत्तर

4

आम तौर पर, आप params के माध्यम से किसी भी डेटा के साथ अपना घटक आपूर्ति करना चाहते हैं।

ko.components.register("news-feed", { 
    viewModel: function (params) { 
     this.vm = params.vm; 
    }, 

    template: "<h2>News Feed</h2><div data-bind=\"text: vm.message\"></div>" 
}); 

उसके बाद, आप जैसे तत्वों को परिभाषित करेगा: उदाहरण के लिए, अपने संरचना के साथ, आप की तरह घटक बना सकते हैं

<news-feed params="vm: newsFeedViewModel"></news-feed> 

<news-feed params="vm: newsFeedViewModel2"></news-feed> 

आप प्रत्येक के लिए सीधे में message पारित करने के लिए चुन सकते हैं और/या अपने पैरा के लिए जो भी नाम समझते हैं उसे चुनें (vm के बजाय)।

नमूना: http://jsfiddle.net/rniemeyer/fssXE/

+0

इस समाधान के लिए धन्यवाद, मैं इसे आज रात की कोशिश और बाद अद्यतन करेगा। – user2465083

+0

यह पूरी तरह से काम कर रहा है। मदद के लिए धन्यवाद :) – user2465083

+0

हाय फिर, क्या आप कृपया निम्न कोड http://jsfiddle.net/fssXE/3/ पर एक नज़र डालेंगे। मैंने दृश्य मॉडल में एक फ़ंक्शन जोड़ा है, और इसे दृश्य मॉडल में फ़ंक्शन में बाध्य किया है। इस बिंदु पर, यदि मैं दृश्य से किसी भी डेटा तक पहुंचने का प्रयास करता हूं तो यह हमेशा अनिर्धारित होगा। मैं दृश्य मॉडल में कार्यों से डेटा तक पहुंचने में सक्षम नहीं हूं। – user2465083

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