2013-05-08 8 views
8

मैं एक एसपीए पर काम कर रहा हूं कि मैं कई मास्टर विचारों का उपयोग करना चाहता हूं। यहां मेरा उपयोग केस है:Durandal एकाधिक मास्टर पेज

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

यह मेरी समझ है कि मुझे इसके लिए रचना का उपयोग करना चाहिए और मेरे पास काम करने के लिए थोड़ा सा कोड है, हालांकि, मैं "माध्यमिक खोल" से डेटा को वास्तविक उप दृश्य में पास करने में सक्षम होना चाहता हूं । ऐसा लगता है कि स्प्लट डेटा उप दृश्य मॉडल की सक्रिय विधि के साथ पारित नहीं किया गया है।

मेरे "मास्टर" व्यूमोडेल में मैंने एक सक्रिय दृश्य नामक एक अवलोकन बनाया है जिसमें एक उप दृश्य मॉडल (व्यूमोडेल/उपयोगकर्ता/विवरण) से संबंधित एक स्ट्रिंग है। इसके बाद मेरे पास एक नॉकआउट स्टेटमेंट है जो निम्नानुसार है:

<!-- ko compose: { 
    model: activeView(),   
    activate: true 
} --><!-- /ko --> 

मैं उप दृश्य में डेटा कैसे पास कर सकता हूं? या ऐसा करने का एक बेहतर तरीका है?

अग्रिम धन्यवाद!

उत्तर

1

मेरे अनुसार, ko.compose इतना गतिशील नहीं है और ऐसा लगता है कि रेजर के लेआउट की तरह काम करता है। डुरंडल के साथ अलग-अलग विचार बनाने के लिए बेहतर है क्योंकि आप कर सकते हैं और फिर उन्हें राउटर से लिंक कर सकते हैं। मैं जॉन पापा के हॉट-तौलिया टेम्पलेट के साथ काम कर रहा हूं; मेरा प्रस्ताव डुरंडल राउटर और नॉकआउट के साथ डेटा (आईडी से अधिक) पास करने से संबंधित है।

जब अपने अनुप्रयोग आरंभ (shell.js, main.js, ...) अपने मार्गों कहीं सेटिंग्स के साथ (shell.js या main.js) अंत में छानने के लिए मैप करें। मार्गों जो डेटा ले जाएंगे, के लिए उन लोगों के साथ बनाया (: आईडी) प्रस्ताव

router.mapRoute('view/:id', moduleId, 'Customer Details', false); 

कहां और कब कुछ मार्गों जरूरत आप के लिए अपने मार्गों फिल्टर करने के लिए यूसुफ गेब्रियल के समाधान (https://stackoverflow.com/a/16036439/2198331) को देख सकते हैं जहां आप की आवश्यकता है, कहां और कब उपयोग करें। मार्गों को फ़िल्टर करने के बाद, आप रूटइन्फो अपने पैरामीटर (स्ट्रिंग या ऑब्जेक्ट्स जैसे चयनित इटैम) को परिवहन करने के लिए हैक कर सकते हैं।

arearoutes = ko.utils.arrayFilter(router.visibleRoutes(), function (route) { 
       // mgpe has been set at app init 
       return route.settings.mgpe === 112; 
      }); 

डेटा आप

areaRoutes.forEach(function(ar){ 
    ar.myItem = mydata; // or vm.selectedItem(); DEPARTURE LUGGAGE 
}, areaRoutes); 

आपका (myItem) के परिवहन के लिए चाहते हैं के साथ फिल्टर के परिणामों से अपने routeInfo का विस्तार अब इन मार्गों से जुड़ा हुआ है तो के रूप में के रूप में आप यह या इन मार्ग की तरह (रों) उन लोगों के साथ अपने डेटा ले जाएगा और लोग इसे भूल कभी नहीं होगा जब तक आप रूटर (myItem)

function activate(adata){ 
     vm.arrivalData(adata.routeInfo.myItem); // ARRIVAL LUGGAGE are here 
} 
का एक ही ऑब्जेक्ट को अपडेट

एक मार्ग घोंसला वाले मार्ग ले सकता है नेस्टेड मेनू जैसे नेस्टेड संदर्भ के लिए उपयोगी; जब एक माता पिता मार्ग सक्रिय है आप यात्रा की तैयारी द्वारा बच्चों मार्गों के साथ खेल सकते हैं:

router.activeItem.settings.areSameItem = function (currentItem, newItem, activationData) { 
    mybag = activationData.routeInfo; // TRAVEL (current) LUGGAGE are present here 
} 

N.B. : इस काम के उपयोग से पहले आपको सुरक्षा समस्या पर विचार करना होगा और क्योंकि मैं दुरंदल के लिए नया हूं, मुझे नहीं पता कि इससे राउटर के मार्ग जीवन चक्र में गंभीर परिणाम नहीं आएंगे। राउटर के मार्ग के दौरान स्थायी रूप से रहने के रूप में ऑब्जेक्ट के नामों से अवगत रहें।

0

आप उपयोगकर्ता ऑब्जेक्ट कैसे बनाते हैं और इसे अपने प्रत्येक व्यूमोडल्स के भीतर इसकी आवश्यकता होती है? आसान बात यह है कि इसे ऐप से जोड़ना होगा (यानी app.user =) कहा गया उपयोगकर्ता ऑब्जेक्ट में किसी भी अवलोकन में किए गए परिवर्तन आपके एसपीए के भीतर प्रत्येक दृश्य और व्यूमोडल्स को अपडेट करेंगे।

इस तरह आप नॉकआउट लाइब्रेरी की उप/पब

+0

अनुप्रयोग है कि मैंने लिखा की क्षमताओं को बढ़ा रहे बस उपयोगकर्ता वस्तुओं की तुलना में अधिक पर इस व्यवहार की आवश्यकता है। Durandal 2.0 "बाल राउटर" पेश किया जो अनिवार्य रूप से उपयोगकर्ताओं को गहरे लिंकिंग समर्थन के साथ कई घोंसले के गोले बनाने की अनुमति देता है। स्वाभाविक रूप से बच्चे के राउटर मेरे लिए जाने का रास्ता थे। – mcottingham

+0

समझा, इन दो विचारों (रूटिंग और एक आवेदन डेटाकॉन्टेक्स्ट) एक साथ काम करते हैं। आप एक एसपीए बना रहे हैं जो खुद को क्लाइंट साइड पर शुरू करता है और शायद ही कभी एक पूर्ण पोस्ट वापस करता है। आपको जो मूल्य मिलता है वह पूर्ण पोस्ट बैक का उपयोग करने वाले पारंपरिक वेब ऐप की बजाय डेस्कटॉप ऐप के समान आपके विकास तक पहुंचने में सक्षम है। इसका मतलब है कि आप एक डाटाकेंटेक्स्ट बना सकते हैं जो वस्तुओं को स्मृति में सहेजता है। इस तरह आपको विचारों के बीच वस्तुओं को पारित करने की आवश्यकता नहीं है, आप केवल वैश्विक डेटाटाँटेक्स्ट को बनाए रख सकते हैं और पूरे ऑब्जेक्ट्स के बजाय पैरामीटर का उपयोग करके मार्ग के भीतर एक आईडी को पास कर सकते हैं। – onzur

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