2012-06-25 11 views
5

क्या एम्बर.रौटर नियंत्रकों और विचारों को संभालने के लिए मुझे कोई अन्य संभावना है? मेरी ऐप संरचना आम तौर पर requ.js पर निर्भर करती है जो संबंधित निर्भरताओं का ख्याल रखती है।मैं एम्बर में एप्लिकेशन कंट्रोलर कैसे सेट कर सकता हूं। राउटर

मेरे उदाहरण में मैं ऐप कर रहा हूं। आवेदन नियंत्रक मुख्य राउटर नियंत्रक के रूप में।

यहाँ एक jsfiddle है: http://jsfiddle.net/mediastuttgart/uMKGt/1/

लेकिन इस मैन्युअल रूप से सेट करने के लिए कोई मौका है? मुझे यह प्रतिबद्ध संदेश https://github.com/emberjs/ember.js/commit/be69395f5eec4187b1df052d7386bcda45f79475 मिला है जहां मैं देख सकता हूं, नियंत्रक को कैसे सेट करें और मैन्युअल रूप से देखें (वैसे भी यह काम नहीं कर सका)।

App = Ember.Application.create(); 

App.MyController = Ember.Controller.extend({}); 
App.MyView = Ember.View.extend({}); 

Router = Ember.Router.extend({ 
    applicationController : App.MyController, 
    root : Ember.Route.extend({ 
     index : Ember.Route.extend({ 
      route : '/', 
      connectOutlets : function (router) { 
       router.get('applicationController').connectOutlet(App.MyView); 
      } 
     }) 
    }), 
    ... 
}); 

संपादित

मैं विस्तार से थोड़ा और अधिक यह समझाने के लिए कोशिश कर रहा हूँ: लेकिन जैसे किसी भी उदाहरण नहीं मिल सका। जबकि हम प्रबंधन या निर्भरताओं के लिए requ.js का उपयोग करते हैं, हमारे पास एकाधिक नियंत्रक हैं जो पूरे एप्लिकेशन के अपने हिस्सों के लिए ज़िम्मेदार हैं। मान लें कि हमारे पास न्यूजलेटर साइनअप फॉर्म है। हम एक कस्टम फ़ंक्शन का उपयोग के रूप में नामस्थान Em.Provide('App.Controller.Newsletter'); जो App.Controller.Newsletter पर एक वस्तु बनाता है उत्पन्न करने के लिए इस परिदृश्य के लिए इस्तेमाल नियंत्रक

- app 
-- controller 
--- newsletter 
---- signup.js 
--- cart 
--- checkout 
-- view 
-- model 
-- router 
-- template 

में संरचित है। यह ऑब्जेक्ट अब हमारे पूरे न्यूज़लेटर एप्लिकेशन के लिए नियंत्रक आधार के रूप में कार्य करता है। App.Controller.Newsletter.Signup = Ember.Controller.extend({}); से शुरू होने से हमें इस उदाहरण में राउटर के लिए "एप्लिकेशन कंट्रोलर" के रूप में पास करने की आवश्यकता है। जैसा कि आप देख सकते हैं, हम Ember.Router के नियंत्रक को तुरंत चालू करने के लिए App.ApplicationController का उपयोग नहीं कर सकते हैं।

उत्तर

9

requirejs बारे में कुछ पता नहीं है, लेकिन मुझे लगता है कि केवल एक चीज है जब

App.initialize() 

ढांचे बुला तो में स्वचालित रूप से इस नियंत्रक इंजेक्षन जाएगा, तो एक

App.ApplicationController = Ember.Controller.extend({...behavior here...}) 

और परिभाषित करने के लिए है राउटर

+6

एनबी। नामकरण यहां महत्वपूर्ण है। एम्बर आपके एप्लिकेशन नेमस्पेस के तहत एक एप्लिकेशन नियंत्रक की तलाश में है। यदि मूल प्रश्न का उपयोग किया गया था तो MyAplicationController के बजाय यह स्वचालित रूप से काम करता। –

+0

@BradleyPriest मुझे यह लिखा होगा ... –

+0

प्रतिक्रियाओं के लिए धन्यवाद। मैंने अधिक जानकारी के साथ अपना प्रश्न अपडेट कर लिया है। –