2013-11-01 3 views
5

से ApplicationRoute की कार्रवाई कॉल चलो कहते हैं कि मैं एक कार्रवाई goBack के साथ एक ApplicationRoute है (जैसा कि आप टिप्पणी में देख सकते हैं, मैं खुद से GoBack को संभालने की ज़रूरत विभिन्न मोबाइल ब्राउज़र में कीड़े की वजह से) करते हैं:Ember.js: नेस्टेड मार्ग

Mobile.ApplicationRoute = Em.Route.extend 
    actions: 
     goBack: -> 
      # TODO: Remove when iOS 7 fixed their history 
      # If there's no route to go back, go to front 
      # TODO: Remove when Microsoft fixed their 
      # back button in offline mode 
      if not (Nn.MobileHelper.isiPhone() or Nn.MobileHelper.isIeMobile()) and @get("router.recentRoute")? 
       return window.history.back() 

      @get("controller").set("isHitBackButton", true) 

      @transitionTo("front").then => @get("controller").set("isHitBackButton", false) 

मैं इस कार्रवाई को किसी अन्य मार्ग से कैसे ट्रिगर कर सकता हूं? ध्यान दें कि चूंकि मुझे @transitionTo पर कॉल करने की आवश्यकता है, इसलिए कोड का यह टुकड़ा मार्ग के अंदर होना चाहिए।

उत्तर

5

डिफ़ॉल्ट रूप से एप्लिकेशन रूट पर क्रियाएं बबल करें! अपने टेम्पलेट में बस {{action 'goBack'}} का उपयोग करें, या कोड (शून्य घटकों) से this.send('goBack') पर कॉल करें। घटकों से आपको ईवेंट कॉल को थोड़ा अलग करने और this.sendAction('internalActionName') का उपयोग करने की आवश्यकता होती है।

http://emberjs.jsbin.com/ulIhUze/1/edit

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