2016-08-26 7 views
7

में मैं कुछ ऐसा ढूंढ रहा हूं जो यूआई-राउटर की $rootScope.$on('$stateChange...' कार्यक्षमता के पूर्व 1.0 संस्करण के बराबर होगा। मुझे नई $ संक्रमण सेवा के बारे में पता है, लेकिन यह समझ में नहीं आता कि यह कैसे काम करता है।

मैं कोशिश करते हैं और प्रकाश डाला कैसे मैं वर्तमान में सेवा का उपयोग कर रहा हूँ और v1.0 + यूआई-रूटर

में यह पूरा करने के लिए नए दृष्टिकोण में कुछ जानकारी पाने की उम्मीद के लिए एक न्यूनतम प्रतिलिपि प्रस्तुत करने योग्य plunker बना लिया है नीचे https://plnkr.co/edit/ddabHc9oXEbqMoNZHYs2?p=preview

न केवल संक्रमण प्रत्येक संक्रमण पर आग लग रहा है, लेकिन यह बाल संक्रमण के लिए बिल्कुल भी आग नहीं लगाता है। क्या यह अपेक्षित व्यवहार है? यह भाई राज्यों पर आग लगती है, लेकिन फिर भी एक बार फिर भी आग लगती है (संभावित रूप से क्योंकि कैशिंग शामिल है?)। मुझे लगता है कि भले ही 'राज्य' को कैश के माध्यम से लोड किया गया हो, फिर भी 'संक्रमण' हो रहा है।

वांछित कार्यक्षमता को जानने में रुचि रखते हैं। धन्यवाद!

उत्तर

8

1) आपका प्लंकर टूट गया है, और बग परिणाम भ्रमित कर रहा है। आप अपने ng-repeat करने से एक ट्रैक जोड़ने के लिए कंसोल में त्रुटियों को रोकने के लिए की जरूरत है:

> angular.js:13920 Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: transition in transitions, Duplicate key: string:Started loading main, Duplicate value: Started loading main

2) ग्लोब * केवल एक ही राज्य स्तर से मेल खाता है। "लालची" से मेल खाने के लिए ** का उपयोग करें (यह तब भी बाल राज्य से मेल खाता है) { to: '**' }

3) सभी मानदंड कुंजी वैकल्पिक हैं। यदि कोई छोड़ा जाता है, तो वे निश्चित रूप से कुछ भी मेल खाते हैं। { to: '**' } के बजाय, मैं एक खाली मापदंड आपत्ति {}

4) संक्रमण बेहतर समझने के लिए पसंद करते हैं, UI-Router Visualizer का उपयोग करें और बदलाव के लिए यूआई-रूटर ट्रेस सेवा (कंसोल जाँच) सक्षम करें। https://plnkr.co/edit/AO49n8biBBEnfnsxPbns?p=preview

पढ़ें documentation for Transition Service जो प्रत्येक जीवन चक्र हुक वर्णन करता है::

  • onBefore
  • onStart
  • onExit (राज्य हुक)
  • onRetain app.run($trace => $trace.enable('TRANSITION'))

    यहाँ उन परिवर्तनों के साथ अपडेट किया अंगुलियों से छूना है (राज्य हुक)

  • onEnter (राज्य हुक)
  • onFinish
  • onSuccess
  • onError

कैसे आप विशिष्ट संक्रमण लक्षित कर सकते हैं के बारे में अधिक जानकारी के लिए hook criteria objects बारे में पढ़ें।

+0

विस्तृत उत्तर के लिए धन्यवाद! # 1 के अलावा (जो थोड़ा शर्मनाक है) मुझे आशा है कि इससे दूसरों की मदद मिलेगी क्योंकि मैंने पहले दस्तावेज़ में वर्णित '**' वाक्यविन्यास नहीं देखा था। वैकल्पिक मानदंड कुंजी के बारे में tidbit के लिए भी धन्यवाद। निश्चित रूप से अब से विजुअलाइज़र का उपयोग करेंगे –

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