2012-12-29 7 views
18

का उद्देश्य क्या है कोई भी समझा सकता है कि कंटेनर मॉड्यूल का उद्देश्य नवीनतम एम्बर में क्या है?Ember.Container

इसके उपयोग का एक उदाहरण, सेटअप में और इस परीक्षण के शुरू में:

module("Ember.View - handlebars integration", { 
    setup: function() { 
    Ember.lookup = lookup = { Ember: Ember }; 
    lookup.TemplateTests = TemplateTests = Ember.Namespace.create(); 

    container = new Ember.Container(); 
    container.optionsForType('template', { instantiate: false }); 
    } 

test("template view should call the function of the associated template", function() { 
    container.register('template', 'testTemplate', Ember.Handlebars.compile("<h1 id='twas-called'>template was called</h1>")); 
+0

मुझे लगता है कि (और आशा) इस दस्तावेज की जाएगी मतलब नहीं। मुझे पता है कि @ चचक ने इस पर काम किया है, शायद वह यहां एक स्पष्टीकरण दे सकता है। –

उत्तर

33

कंटेनर के लक्ष्य प्रशासनिक से मॉड्यूल निर्भरता वर्णन करने के लिए एक अधिक सामान्य प्रयोजन तंत्र प्रदान करना है हम जिस दृष्टिकोण का उपयोग कर रहे थे।

उदाहरण के लिए, कल्पना करें कि आप post मार्ग के लिए नियंत्रक को ढूंढना चाहते हैं। डिफ़ॉल्ट एम्बर नियम यह है कि हम इसे App.PostController के रूप में देखेंगे। कंटेनर से पहले, हम उन नियमों को केवल हार्डकोड करेंगे जहां हमें लुकअप करने की आवश्यकता होती है (classify और दोस्तों का उपयोग करके)।

कंटेनर हमें उन नियमों को एक ही स्थान पर परिभाषित करने का एक तरीका प्रदान करता है। बोनस के रूप में, उन नियमों के लिए नियमों को ओवरराइड किया जा सकता है जो एक अलग सम्मेलन चाहते हैं।

तो Ember.get(namespace, Ember.String.classify(name) + 'Controller') आंतरिक रूप से, अब हम container.lookup('controller:' + name) करते हैं।

+3

लेकिन जैसा कि मैं समझता हूं कि यह केवल आंतरिक एपीआई के लिए उपयोग किया जाता है, न कि सार्वजनिक, सही? – ramigg

2

आंतरिक उपयोग के लिए इरादा।

सार्वजनिक एपीआई

https://github.com/emberjs/ember.js/commit/5becdc4467573f80a5c5dbb51d97c6b9239714a8

+2

कंटेनर के कुछ हिस्सों कुछ हद तक सार्वजनिक हैं और पंजीकरण/लुकअप/निर्भरताओं को इंजेक्ट करने के लिए उपयोग किए जाने चाहिए (चाहिए)। आपके द्वारा लिंक की गई प्रतिबद्धता #controller के बारे में बातचीत करती है। अर्थात। ऐसा करने के लिए आपको पहले से ही सार्वजनिक तंत्र होने पर कंटेनर तक नहीं पहुंचना चाहिए (एम्बर इन निर्भरता इंजेक्शन को दूर करता है)। ["कंटेनर के लिए सार्वजनिक एपीआई अभी भी प्रवाह में है।"] (Https://github.com/emberjs/ember.js/blob/master/packages/container/lib/main.js) – Michael

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

  • कोई संबंधित समस्या नहीं^_^