2012-06-24 23 views
15

मैं कोणीय में छिपा फ़ील्ड कैसे एक्सेस करूं? मेरे पास एक ऐप है, जहां मैं सूची में प्रत्येक आइटम के लिए एक फॉर्म जमा करना चाहता हूं। फॉर्म सरल है - इसमें बटन सबमिट किया गया है और आईडी मान रखने वाला एक छुपा क्षेत्र है। लेकिन यह काम नहीं करता है। मूल्य खाली है।AngularJs में छिपे हुए फ़ील्ड

मैंने स्थिति को प्रदर्शित करने के लिए डिफ़ॉल्ट कोणीय उदाहरण अद्यतन किया - टोडो टेक्स्ट छिपे हुए क्षेत्र में है।

http://jsfiddle.net/tomasfejfar/yFrze/

+0

आप समस्या का एक सरल उदाहरण बनाना सकते हैं? यहां एक बेस फीडल है: http://jsfiddle.net/andytjoslin/DkMyP/ –

+0

बेशक: http://jsfiddle.net/DkMyP/1/ –

उत्तर

2

अपने सरल बेला में, समस्या एनजी-init का उपयोग कर या नियंत्रक में एक प्रारंभिक मान सेट द्वारा निर्धारित किया जा सकता है। value विशेषता एनजी-मॉडल को प्रभावित नहीं करेगी।

http://jsfiddle.net/andytjoslin/DkMyP/2/

इसके अलावा, अपने प्रारंभिक उदाहरण (http://jsfiddle.net/tomasfejfar/yFrze/) मेरे लिए अपनी वर्तमान स्थिति में क्रोम पर काम करता है 15/विंडोज 7

+0

लेकिन यह केवल एक बार काम करता है। अगली बार चर खाली है। –

+0

आह, ऐसा इसलिए है क्योंकि todo उदाहरण में 'todoText'' addTodo' फ़ंक्शन में रिक्त स्ट्रिंग पर सेट है। –

+0

जाहिर है! ओह बकवास! : डी धन्यवाद! : डी –

8

आप करना चाहते हैं आईडी को अपने कोड में एनजी-दोहराने से पास करें, आपको एक छिपे हुए क्षेत्र का उपयोग करने की आवश्यकता नहीं है। यहाँ मैं क्या किया है:

<ul> 
    <li ng-repeat="movie in movies"> 
    {{movie.id}} {{movie.title}} <a href="#" ng-click="movieDetails(movie)">read more</a> 
    </li> 
</ul> 

:

उदाहरण के लिए चलो कहते हैं कि मैं फिल्मों का एक संग्रह के माध्यम से पाशन कर रहा हूँ, और आप "आगे पढ़े" लिंक यह आपके जे एस कोड के लिए अपने आईडी पारित करेंगे क्लिक करते हैं फिर अपने जे एस कोड में, अगर आप इस तरह की आईडी प्राप्त कर सकते हैं:

$scope.movieDetails = function (movie) { 
    var movieID = movie.id; 
} 
+0

कमाल! धन्यवाद –

2

आप कुछ इस तरह कर सकते हैं।
यह एक गंदा चाल है, लेकिन यह (तरह काम करता है सबसे गंदा चाल ;-)
तुम सिर्फ अपने गुप्त फ़ील्ड
के रूप में प्रपत्र नाम का उपयोग और हमेशा प्रपत्र आईडी "फार्म"

<!doctype html><html ng-app><head> 
<script src="angular-1.0.1.min.js"></script> 
<script> 
function FormController($scope) { 
    $scope.processForm = function() {alert("processForm() called."); 
    $scope.formData.bar = ""; 
    try {$scope.formData.bar = document.getElementById("form").name;} 
    catch(e) {alert(e.message);} 
    alert("foo="+$scope.formData.foo+ " bar="+$scope.formData.bar); 
    }; 
} 
</script></head><body> 
<div ng-controller="FormController"> 
<form name="YourHiddenValueHere" id="form"> 
<input type="text" ng-model="formData.foo" /> 
<button ng-click="processForm()"> SUBMIT </button> 
</form> 
</div></body></html> 

देना यह आपको सभी रूपों के लिए एक नियंत्रक का उपयोग करने और
उन्हें एक सर्वर स्क्रिप्ट भेजने की अनुमति देता है।
फ़ॉर्म नाम (formData.foo) द्वारा भिन्नता की तुलना में स्क्रिप्ट और जानता है कि क्या करना है।
छिपे हुए क्षेत्र इस परिदृश्य में ऑपरेशन का नाम देते हैं।

देखा - आप के रूप में
कई रूपों आप चाहते हैं और एक सर्वर स्क्रिप्ट
और उन सभी के लिए एक FormController के साथ एक पूर्ण आवेदन किया है।

0

मैं सही करने के लिए (सुधार) अपने आप को है: जावास्क्रिप्ट नियंत्रक में तो

<form> 
<input type="text" ng-model="formData.foo" /> 
<input type="hidden" id="bar" value="YourHiddenValue" /> 
<button ng-click="processForm()"> SUBMIT </button> 
</form> 


और:
आप इसे और अधिक सुरुचिपूर्ण कर सकते हैं

$scope.formData.bar = ""; 
try {$scope.formData.bar = document.getElementById("bar").value;} 
catch(e) {alert(e.message);} 
alert("foo="+$scope.formData.foo+ " bar="+$scope.formData.bar); 


तो आप जितना चाहें उतने छुपे हुए फ़ील्ड प्राप्त कर सकते हैं।

13

आप अपने जावास्क्रिप्ट फ़ाइल में कुछ भी हार्डकोड नहीं करना चाहते हैं, तो आप या तो इसे AJAX के माध्यम से लोड कर सकते हैं, या कार्य करें:

<input type="hidden" name="value" ng-init="model.value=1" value="1"> 

इस तरह से, आप जे एस के साथ प्रपत्र कार्यक्षमता बंद रख सकते हैं, और अभी भी AngularJS

+2

उपयोग करें: '<इनपुट प्रकार =" छुपा "नाम =" मान "ng-model =" model.value "ng-init =" model.value = 1 "value =" {{model.value}} ">' । इस प्रकार 'model.value' में परिवर्तन इनपुट मान में अपडेट किया जाएगा। – GFoley83

+1

मॉडल मूल्य पर एक छिपे हुए मूल्य को सेट करने की कोई आवश्यकता नहीं है, क्योंकि ऐसा कुछ नहीं है जो उपयोगकर्ता बदल जाएगा। मॉडल मूल्य को डोम – pocesar

+1

को बदलने के बिना दायरे में रखा जा सकता है यदि आप उस पोस्टबैक में उस मॉडल मान (या कुछ इंटरप्लाटेड मान) तक पहुंच चाहते हैं तो क्या होगा? यह तब बहुत आसान होगा। मैं छुपे हुए क्षेत्रों के लिए एक और उपयोगी उपयोग केस हाइलाइट कर रहा हूं। – GFoley83

0

सरल में छिपी हुई फ़ील्ड का उपयोग करें:

<input type="hidden" name="livraisonID" value="{{livraison.id}}"/> 

यह काम करता है!

0

= एनजी बाध्यकारी का उपयोग करें "{{employee.data}}" यह ठीक से काम करेंगे ## शीर्षक ##

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