2013-07-19 14 views
6

एम्बर.जेएस में ईवेंट को प्रचारित करें, नियंत्रक में प्रबंधित नहीं होने वाली घटनाएं एप्लिकेशन मार्ग पर राउटर श्रृंखला को प्रसारित करती हैं (अधिक जानकारी के लिए http://emberjs.com/guides/views/handling-events/ देखें)।Ember.js - नियंत्रक/राउटर चेन

क्या नियंत्रक में इवेंट हैंडलर को परिभाषित करने का कोई तरीका है जो घटना को राउटर को प्रचार जारी रखने की अनुमति देता है?

App.SampleController = Ember.ObjectController.extend({ 
    myEvent: function(obj) { 
    this.set('aVariable', true); 
    } 
}); 

App.ApplicationRoute = Ember.Route.extend({ 
    events: { 
    myEvent: function(obj) { 
     this.transitionTo('something'); 
    } 
    } 
}); 

वहाँ CarsController में myEvent हैंडलर अपनी आंतरिक स्थिति चर सेट करने के लिए, लेकिन यह भी घटना आवेदन रूट करने के लिए श्रृंखला को लात के लिए एक तरीका है? मुझे इसके बारे में पता है:

App.__container__.lookup('router:main').send('myEvent', obj); 

लेकिन यह एम्बर आंतरिक का उपयोग करता है। मैं उम्मीद कर रहा था कि ऐसा करने का एक और मानक तरीका था।

उत्तर

6

एक तरह से इस लक्ष्य को हासिल करने के लिए हो सकता है:

App.SampleController = Ember.ObjectController.extend({ 
    needs: 'application', 
    myEvent: function(obj) { 
    this.set('aVariable', true); 

    this.get('controllers.application').send('myEvent'); 
    } 
}); 

कार्य demo

उम्मीद है कि यह मदद करता है।

+0

काम नहीं करता है (Ember.js 1.0.0-rc.6 का उपयोग करने का प्रयास किया गया)। मैंने सोचा कि क्या यह भी हो सकता है, इसलिए मैंने सच और झूठी वापसी की कोशिश की लेकिन न तो काम किया। – kleinsch

+0

@ क्लेन्सच, ने मेरा जवाब संपादित किया, गलती के लिए खेद है – intuitivepixel

+0

@ क्लेन्सच एडे भी एक डेमो जेएसबीएन: http://jsbin.com/oduhom/3/edit को एप्लिकेशन नियंत्रक को ईवेंट भेजना चाहिए – intuitivepixel