2016-09-19 10 views
5

यह एल्म-एमडीएल से एक उदाहरणएक बड़े एकल पृष्ठ एप्लिकेशन में elm mdl अनुक्रमणिका को कैसे संभालें?

Button.render Mdl [0] model.mdl 
    [ Button.raised 
    , Button.ripple 
    , Button.onClick PollMsg 
    ] 
    [ text "Fetch new"] 

सूचकांक यहाँ है [0]। मुझे लगता है कि अगर मैं एक पेज पेज का निर्माण कर रहा हूं तो मैं इंडेक्स जैसे ["पेज 0", 0] डाल सकता हूं। क्या वह सही है?

लेकिन क्या इसका मतलब यह है कि एप्लिकेशन में सभी बटनों के लिए सभी एमडीएल डेटा स्मृति में है? यह कैसे काम कर रहा है?

+2

["पृष्ठ 0", 0] काम नहीं करेगा क्योंकि आपको इंटीजर की एक सूची निर्दिष्ट करनी है। चूंकि एमडीएल-मॉडल में इतनी सारी जानकारी नहीं है कि उन्हें स्मृति-उपयोग के संबंध में कोई समस्या नहीं है। मॉडल ज्यादातर एनीमेशन-स्टेटस रखने के लिए उपयोग किए जाते हैं, इसलिए अलग-अलग पृष्ठों पर इंडेक्स का पुन: उपयोग करना ठीक है। संग्रह को मैप करते समय List.indexedMap का उपयोग करना एक साफ चाल है। इस तरह आप प्रत्येक आइटम के लिए एक सूचकांक प्राप्त करते हैं (जैसा कि 'बटन.रेंडर एमडीएल [0, i] model.mdl' में)। – pierrebeitz

उत्तर

5

elm-mdl इन पहचानकर्ताओं को अपने आंतरिक हैंडलिंग के लिए उपयोग करता है। विशेष रूप से, ये आईडी कारण हैं कि आप update और view पर ऐसी सरल कॉल से दूर हो सकते हैं।

@pierrebeitz पहले ही समझाया गया है, ये पूर्णांक एप्लिकेशन मेमोरी में रहते हैं, लेकिन यह कोई समस्या नहीं है (भले ही आपके पास सैकड़ों बटन हों)।

  1. [0, 0], [0, 1] और इतने पर की तरह एक नंबर-संयोजन का उपयोग करें:

    बड़ा संदर्भों में एल्म-एमडीएल के साथ काम करने के लिए के रूप में, आप कम से कम इन दो विकल्पों में उपलब्ध है। यह विशेष रूप से उपयोगी है, यदि आप लूप में एकाधिक समान एल्म-एमडीएल घटक (f.ex. रेडियो बटन या ऐसे) उत्पन्न करते हैं। आपके कोड में, पहली अनुक्रमणिका हार्ड-कोडेड हो सकती है, लेकिन दूसरा पूर्णांक लूपिंग से निकलता है।

  2. समग्र तस्वीर के लिए आपको ध्यान में रखना होगा, कि ये पूर्णांक आपके वास्तविक एल्म-एमडीएल मॉडल उदाहरण के लिए स्थानीय हैं। दूसरे शब्दों में, एक अलग मॉडल बनाने से आप इन पूर्णांकों का पुनः उपयोग कर सकते हैं। इसका मतलब है कि आप टीईए घटकों का उपयोग कर सकते हैं जहां एक घटक का अपना मॉडल होता है, जिसमें एल्म-एमडीएल मॉडल भी शामिल है। चूंकि प्रत्येक घटक के पहचानकर्ताओं पर नि: शुल्क शासन होता है, इसलिए आपके पास गड़बड़ न करने का एक आसान समय होता है।

यह सब कहा जा रहा है, मैं इन इंडेक्स को एल्म-एमडीएल का सबसे खराब हिस्सा मानता हूं। मैं वास्तव में सराहना करता हूं कि अगर वे उनसे छुटकारा पा सकते हैं (परिणामस्वरूप परिणामस्वरूप कोड को अत्यधिक जटिल बनाते हैं), लेकिन उस समय के लिए मैं उन्हें अन्यथा भयानक सामग्री डिजाइन लाइब्रेरी के लिए मूल्य टैग मानता हूं।

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