2011-05-21 15 views
13

AngularJS site पर कुकबुक फॉर्म उदाहरण केवल क्लाइंट पर राज्य को बचाएं। मैं सर्वर पर कैसे जमा करूं?AngularJS - मैं सर्वर पर नियंत्रक को एक फॉर्म कैसे सबमिट करूं?

वैकल्पिक रूप से, मैं ng:click="save()" फ़ंक्शन में फ़ॉर्म पर jQuery के form.submit() का उपयोग कैसे करूं?

संपादित करें - मिले 2 तरीके यह करने के लिए (मैं भी HTML मार्कअप मैंने पहले चिपकाया हटाया - बस स्रोत के लिए उन्नत प्रपत्र रसोई की किताब उदाहरण को देखें) (Dobrica Pavlinusic द्वारा)

  1. http://webpac2.rot13.org:3000/conference/Work जाना JSON प्रारूप में सर्वर को डेटा भेजने के लिए संसाधन का उपयोग कर AngularJS तरीका। मुझे इसके साथ सर्वर के पक्ष में समस्याएं थीं - एंगुलरजेएस इसे ठीक भेज रहा था लेकिन grails इसे उलझन में थे (फायरबग के अनुसार और सामग्री की लंबाई के अनुरोध)। मुझे और अधिक देखने की ज़रूरत है। मैं $save() जैसे संसाधन विधि के लिए सामग्री-प्रकार को कोणीय में कैसे बदलूं?

  2. सबमिट करें और सबमिट बटन का उपयोग करें। चूंकि मैं एक पृष्ठ वेब ऐप नहीं कर रहा हूं, इसलिए मैंने इस विधि का उपयोग किया था। अधिकांश सत्यापन क्लाइंट पर थे और सर्वर पर कुछ और जो मेरे लिए पर्याप्त थे।

बस इस यहाँ डाल इतना है कि किसी और संभव समाधान और सबसे अच्छा तरीका के लिए इसका उपयोग कर सकते हैं।

+0

आप अपने वर्तमान मार्कअप और कोड दिखा सकते हैं? अपने पीएस को दोबारा करें: शायद यह उतना ही बुरा है जितना अच्छा हो सकता है ... –

+0

@marcel - ने मेरी कॉपी पेस्ट सही ढंग से प्रस्तुत नहीं किया है। मुझे आशा है कि आप इससे बाहर निकल सकते हैं। अपनी मदद की सराहना करें –

+0

क्या आप एचटीएमएल मार्कअप को ब्राउज़र पर भेज सकते हैं ('स्रोत देखें' का उपयोग करें), इसलिए हमें यह पता लगाने की ज़रूरत नहीं है कि परिणामस्वरूप एचटीएमएल कैसा दिखता है। आखिरकार, यह जावास्क्रिप्ट देखेंगे। –

उत्तर

0

जहां तक ​​मुझे पता है, वास्तव में हेडर को संशोधित करने का एक अच्छा तरीका नहीं है जो कोणीय सर्वर को editing angular source के लिए अपेक्षा करता है। यह योजनाबद्ध वृद्धि है, लेकिन यह अभी भी नहीं किया गया है।

मुझे लगता है कि angular google group इस तरह के विशिष्ट प्रश्न पूछने के लिए बेहतर जगह हो सकती है क्योंकि डेवलपर्स वास्तव में दोस्ताना और जानकार हैं। मुख्य रूप से testability की वजह से -

12

ध्यान दें, वहाँ तर्क (अपने जे एस कोड) दृश्य (अपने html टेम्पलेट) और के सख्त जुदाई है।

सही तरीके से बस, सर्वर के लिए अपने मॉडल को भेजने के लिए $ संसाधन (बाकी के लिए) या निम्न स्तर $ http का उपयोग कर रहा है। टेम्पलेट में नौकरी करने के बजाय।

सरल उदाहरण - HTML टेम्पलेट

First: <input type="text" ng-model="person.first" /> 
Last: <input type="text" ng-model="person.last" /> 
<button ng:click="save()">Save</button> 

जावास्क्रिप्ट - नियंत्रक

function FormCntl($scope, $http) { 
    $scope.save = function() { 
    $http.put('/save.py', $scope.person); 
    }; 
} 
+0

अगर मैं 'this.save = function ... 'का उपयोग करता हूं, तो यह काम नहीं करता है। मुझे नियंत्रक में '$ scope.save = function ...' का उपयोग करना होगा। – Voles

+2

@ वोल्स धन्यवाद, वर्तमान v1 वाक्यविन्यास में अपडेट किया गया (उत्तर 0.9 में लिखा गया था। * वाक्यविन्यास) – Vojta

+0

जब मैं सर्वर-साइड पर अनुरोध को डंप करता हूं तो कुछ भी सबमिट नहीं किया जाता है।यह एक खाली सरणी है: 'लॉग :: लिखें (print_r ($ _ अनुरोध, सत्य)) ' – Michelle

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