2013-03-14 11 views
6

में बूटस्ट्रैपिंग डेटा पृष्ठ लोड पर एम्बरजेस ऐप के लिए बूटस्ट्रैप डेटा का सबसे अच्छा तरीका क्या है। मुझे पता है कि यह एक छिपे हुए div के भीतर विशेषता या डेटा के लिए डेटा से अधिकतर डेटा प्राप्त करेगा, लेकिन एम्बरजेस ऐप लाइफसाइक्ल में यह कहां जाएगा?ember.js

+0

आप "उपयोगकर्ता वापस आता है" समझा सकता है भाग एक छोटे से गहराई में और अधिक? यानी - क्या आप स्थानीय स्टोरेज या कुकीज या ब्राउजर में कुछ और उपयोग कर रहे हैं जो तुरंत उपलब्ध है (कुछ सामग्री दिखाने के लिए) $ .ajax सामान होता है? –

+0

"उपयोगकर्ता वापस आता है" का तात्पर्य है कि एक सत्र है। तो मेरे पास एचटीएमएल में एम्बेडेड कुछ जेसन होगा कि एम्बर ऐप बूटस्ट्रैप के लिए उपयोग करेगा (अन्य जानकारी के साथ, न केवल उपयोगकर्ता)। जो मैं समझने की कोशिश कर रहा हूं वह एम्बर ऐप लाइफसाइकिल में एचटीएमएल से डेटा पकड़ने और इसका उपयोग करने के लिए सबसे अच्छी जगह है। – spullen

उत्तर

3

कुछ अलग-अलग प्रकार के डेटा हैं जिन्हें आप लोड कर सकते हैं। मैं (स्थिर डेटा के लिए) डायनामिक डेटा के लिए DS.FixtureAdapter के साथ ember-data मॉडल का उपयोग किया गया है या DS.RESTAdapter (

यह जुड़नार का उपयोग कर एक छोटा सा उदाहरण है:।

App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: 'DS.FixtureAdapter' 
}); 

App.Page = DS.Model.extend({ 
    title: DS.attr('string') 
}); 

App.Page.FIXTURES = [{ 
    id: 1, 
    title: "Test Title #1" 
    }, { 
    id: 2, 
    title: "Random Title #2" 
    }]; 

मेरी (छोटा सा) क्षुधा में मैं बस हूँ स्टोर और मॉडलों को परिभाषित करने के बाद सीधे स्थिरता डेटा लोड करना। यह सरल एक से एक संगठनों के लिए अच्छी तरह से काम करता है (प्रकार या श्रेणियों की स्थिर सूची सोचें)। गैर स्थिरता प्रकार डेटा का उपयोग करते समय इसे रूट पर model विशेषता के रूप में निर्दिष्ट किया गया है, और आवश्यकता होने पर लोड हो जाता है।

अद्यतन

प्रारंभिक डेटा को पूर्व-लोड करने के लिए (उदा। पृष्ठ लोड पर loggedIn तरह प्रारंभिक पृष्ठ राज्य) आप DS.Store#load इस्तेमाल कर सकते हैं:

Store = DS.Store.create({ 
    revision: 11 
}); 

Page = DS.Model.extend({ 
    title: DS.attr('string') 
}); 

Store.load(Page, {id: 1, title: 'Wow Cool Title'}); 

Store.find(Page, 1).get('title') //=> 'Wow Cool Title' 
+1

मैं RESTAdapter का उपयोग कर रहा हूं। जो मैं प्राप्त करने की कोशिश कर रहा हूं वह है कि जब मैं शुरुआत में सबकुछ प्रस्तुत करता हूं तो पेज पर मौजूद डेटा को कैसे लोड किया जाए। तो उदाहरण के लिए मेरे पास एक मौजूदा उपयोगकर्ता है जिसका मैं ट्रैक रखना चाहता हूं, और मैं वर्तमान उपयोगकर्ता को पेज लोड पर बूटस्ट्रैप करना चाहता हूं (कहें कि उपयोगकर्ता पृष्ठ बंद कर देता है और बाद में वापस आ जाता है)। – spullen

+0

मुझे लगता है कि यह काम करेगा। क्या आपको पता है कि Store.load arrays में लेता है? यदि नहीं, तो मुझे लगता है कि मैं एम्बेडेड डेटा पर लूप कर सकता हूं और प्रत्येक के लिए स्टोर लोड कर सकता हूं। – spullen

+2

हां, आप 'DS.Store.loadMany' के साथ एक समय में एक से अधिक रिकॉर्ड लोड कर सकते हैं (परिभाषा [यहां] देखें (https://github.com/emberjs/data/blob/master/packages/ember-data /lib/system/store.js#L1616) और कुछ परीक्षण [यहां] (https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/store_test.js#L211)। –