2015-03-24 4 views
18

मैं अपने मार्ग विन्यास के लिए $stateProvider का उपयोग कर रहा हूं। मैं एक आंशिक पृष्ठ से दूसरे (ng-click पर) कुछ कस्टम डेटा पास करने के लिए प्रदान किए गए कस्टम डेटा का लाभ लेना चाहता था।मैं यूई-राउटर में किसी दृश्य से कस्टम डेटा कैसे पास कर सकता हूं?

कस्टम डेटा संलग्न राज्य ऑब्जेक्ट्स को

आप राज्य वस्तु के लिए कस्टम डेटा संलग्न कर सकते हैं (हम डेटा गुण का उपयोग करना चाहिये टकराव से बचने के लिए):

यह सबसे अच्छा मैं अब तक मिल गया है।

// Example shows an object-based state and a string-based state 
var contacts = { 
    name: 'contacts', 
    templateUrl: 'contacts.html', 
    data: { 
     customData1: 5, 
     customData2: "blue" 
    } 
} 
$stateProvider 
    .state(contacts) 
    .state('contacts.list', { 
     templateUrl: 'contacts.list.html', 
     data: { 
      customData1: 44, 
      customData2: "red" 
     } 
    }) 

ऊपर के उदाहरण के साथ कहा गया है आप इस तरह डेटा का उपयोग कर सकते हैं:

function Ctrl($state){ 
    console.log($state.current.data.customData1) // outputs 5; 
    console.log($state.current.data.customData2) // outputs "blue"; 
} 

Source

मान लें मैं एक और राज्य की अपनी टेम्पलेट और नियंत्रक के साथ ग्राहकों को कहा जाता है। मैं ग्राहकों के नियंत्रक/दृश्य के भीतर संपर्कों के राज्य डेटा ऑब्जेक्ट का मूल्य कैसे बदल सकता हूं? अर्थात: मैं इस से बदलना चाहते हैं:

data: { 
      customData1: 44, 
      customData2: "red" 
     } 
इस के लिए

:

data: { 
      customData1: 100, 
      customData2: "green" 
     } 

किसी भी सूचक या नमूना की सराहना की जाएगी!

संशोधित - मुझे यह स्वयं से काम कर रहा है और यहां बताया गया है:। नियंत्रक पर (कहें: ग्राहकCtrl), आप नाम से संपर्क का राज्य प्राप्त कर सकते हैं और इच्छित परिवर्तन कर सकते हैं - जैसे कि कस्टम डेटा ऑब्जेक्ट की संपत्ति मान को अपडेट करना जैसे: // नाम से राज्य प्राप्त करें और मूल्य बदलें कस्टम डेटा प्रॉपर्टी

$state.get('contacts').data.customData1= 100; 
$state.go('contacts');// then you can make a go to that state. 

मुझे आशा है कि इससे किसी की मदद मिलेगी।

+1

आप समाधान आप एक जवाब के रूप में पाया जोड़ने और इसे स्वीकार करना चाहिए कर सकते हैं। यह पूरी तरह से ठीक है और प्रोत्साहित किया जाता है, ताकि अन्य लोग जो आपने सीखा उससे लाभ उठा सकते हैं। – GregL

+0

धन्यवाद @ ग्रेगेल, मैंने अभी इसे पोस्ट किया है और इसे एक उत्तर के रूप में स्वीकार कर लिया है, मैं अद्यतन प्रश्न भी छोड़ दूंगा। – user3818435

उत्तर

23

मुझे यह स्वयं से काम कर रहा है और यहां बताया गया है। एक नियंत्रक (कहें: ग्राहकCtrl) पर, आप नाम से संपर्क स्थिति प्राप्त कर सकते हैं (https://github.com/angular-ui/ui-router/wiki/Quick-Reference#statename और $ state.get ([stateName]) )
एक बार जब आप राज्य प्राप्त कर लेते हैं, तो आप जो परिवर्तन चाहते हैं उसे बदल सकते हैं-जैसे कस्टम डेटा ऑब्जेक्ट की संपत्ति मान को निम्नानुसार अपडेट करने के रूप में:

//get the state by name and change the value of custom data property 
$state.get('contacts').data.customData1= 100; 
    // then you can go to that state. 
$state.go('contacts'); 

मुझे आशा है कि इससे किसी की मदद मिलेगी।

6

आप वर्तमान स्थिति के लिए कस्टम डेटा को पढ़ने की कोशिश कर रहे हैं, तो आप आसानी से इसे पढ़ने के रूप में $state.current.data.customData1 = 100;

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

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