2014-09-17 14 views
8

में पृष्ठों के बीच डाटा पासिंग मैं एक ऐप्स की जांच प्रक्रिया में पृष्ठों के बीच डेटा पास करने के कोशिश कर रहा हूँ, लेकिन यह जिस तरह से यह कार्य नहीं करने पर है। मैंने कुछ पढ़ा है और अधिकांश लोग सेवा का उपयोग करने की सलाह देते हैं, लेकिन एकमात्र मुद्दा यह है कि जब पृष्ठ रीफ्रेश किया जाता है (उपयोगकर्ता क्लिक रीफ्रेश या बाद में वापस आ जाता है) सेवा से सभी डेटा गायब हो जाता है। यह समझ में आता है क्योंकि सेवा में डेटा लगातार नहीं है लेकिन यह समस्या पैदा कर रहा है।AngularJS + पृष्ठ ताज़ा

तो सवाल यह है: मैं AngularJS में पृष्ठों के बीच डेटा कैसे पारित कर सकते हैं और अभी भी डेटा है कि एक पृष्ठ को रीफ्रेश के बाद पारित किया गया था रहते हैं?

यहाँ अब तक (क्वेरी स्ट्रिंग का उपयोग करने में मेरी प्रयास के साथ) मेरी कोड है:

.service('checkoutService', 
      function checkoutService($location, Address, $routeParams, TicketGroup) { 
    var ticket_quantity = 0; 
    var ticket_group = {}; 
    var selected_address = {}; 

    this.loadInformation = function() { 
     if(!ticket_quantity && $routeParams.ticket_quantity) 
      ticket_quantity = $routeParams.ticket_quantity; 
     if(!ticket_group && $routeParams.ticket_group_id) 
      ticket_group = TicketGroup.get({id: $routeParams.ticket_group_id}); 
     if(!selected_address && $routeParams.address_id) 
      selected_address = Address.get({id: $routeParams.address_id}); 
    } 

    this.setTicketQuantity = function(quantity) { 
     ticket_quantity = quantity; 
     $location.path().search({ticket_quantity: quantity}); 
    } 
    this.getTicketQuantity = function() { 
     return ticket_quantity; 
    } 

    this.setTicketGroup = function(object) { 
     ticket_group = object; 
     $routeParams.ticket_group = object.id; 
    } 
    this.getTicketGroup = function() { 
     return ticket_group; 
    } 

    this.setSelectedAddress = function(object) { 
     selected_address = object; 
     $routeParams.address_id = object.id; 
    } 
    this.getSelectedAddress = function() { 
     return selected_address; 
    } 
}); 
+1

पर गौर cookiestore चाहते हैं तो आप localStorage माना जाता है पर गौर में रुचि रखते हैं? –

+0

या ngCookie का उपयोग करें? या सर्वर पर संग्रहीत डेटा है और इसे रीफ्रेश पर पुनः लोड करें। –

उत्तर

14

, यह करने के लिए कई विकल्प हैं

  1. छोटे डेटा के लिए, सेट डेटा है कि 4k
  2. के तहत के लिए आप $cookieStore इस्तेमाल कर सकते हैं
  3. एक अन्य विकल्प, विशेष रूप से बड़े डेटा सेट के साथ, Local Storage उपयोग करना और फिर पेज लोड/पुनः लोड करने पर डेटा पुनः प्राप्त करने होंगे।
  4. अगर यह केवल डेटा के एक बहुत छोटी राशि, या डेटा है कि आप $ rootscope इस्तेमाल कर सकते हैं बाहर एकाधिक पृष्ठ के माध्यम से इस्तेमाल किया जाता है, लेकिन यह यह के रूप में सिर्फ वैश्विक नाम स्थान प्रदूषण की तरह सबसे अच्छा विकल्प नहीं है।
  5. अंतिम विकल्प, कैसे डेटा प्राप्त हो रहा है पर निर्भर करता है, एक service लागू किया जा सकता है कि मूल रूप से एक सिंगलटन विभिन्न कोणीय गुंजाइश के लिए पारित किया जा सकता है।

नोट: केवल पहले दो लगातार हैं।

आपके मामले में मुझे लगता है कि स्थानीय भंडारण या cookiestore का उपयोग कर आप सबसे अच्छा विकल्प हो जाएगा। आप एक सेवा का उपयोग करने की कोशिश कर रहे हैं, जो उचित होगा यदि आप इसे लगातार नहीं रखना चाहते थे (पेज या पेज रीफ्रेश छोड़ना)। सेवाएं सिंगलेट हैं जिन्हें कोणीय द्वारा प्रबंधित किया जा रहा है, जब इंजेक्शन दिया जाता है तो आपको प्रत्येक इंजेक्शन में एक ही वस्तु का संदर्भ मिलेगा। हालांकि, पृष्ठ पर लौटने पर इस सिंगलटन को फिर से शुरू करने की आवश्यकता होगी, इस प्रकार पिछले सभी डेटा खोना होगा। सेवा को लगातार बनाने का एकमात्र तरीका डाटाबेस, स्थानीय फ़ाइल, या कहीं और से एसएसक्यूएल से डेटा लोड करना होगा। हालांकि, मुझे नहीं लगता कि यह वास्तव में आप के बाद क्या है।

आप का पीछा स्थानीय भंडारण कार्यान्वयन तो इन मॉड्यूल angular-local-storage, ngStorage या इस answer

आप का उपयोग करने के लिए इस answer

+2

$ cookieStore का उपयोग करने वाली सेवा होने के कारण इन प्रकार की चीजों के लिए बिल्कुल सही है। इस तरह आप अपने आवेदन में कहीं से भी कुकी मूल्यों तक आसानी से पहुंच सकते हैं। –

+0

@ robert.bo.roth यह एक दिलचस्प समाधान होगा, और बहुत से लोगों के लिए बहुत उपयोगी हो सकता है। –

0

आप सत्र/LocalStorage उपयोग कर सकते हैं। या एक ब्राउज़र डीबी pounchdb की तरह। सीजन भंडारण: स्टोर सत्र डेटा; LocalStorage: दुकान डेटा न सिर्फ सत्र दायरे pounchdb: ऑफ़लाइन db

+1

आप अपने जवाब –

+0

आप ठीक कह रहे हैं थोड़ा और अधिक विस्तृत करना चाहिए, मैं विस्तार से बता सकता है। – ABOS

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