कोणीय तरीका
ऐसा करने का सही कोणीय तरीका है कि एक पेज ऐप, AJAX को फॉर्म टेम्प्लेट में लिखें, फिर इसे मॉडल से गतिशील रूप से पॉप्युलेट करें। मॉडल डिफ़ॉल्ट रूप से फॉर्म से आबादी नहीं है क्योंकि मॉडल सत्य का एकल स्रोत है। इसके बजाय कोणीय दूसरे तरीके से जाएगा और मॉडल से फॉर्म को पॉप्युलेट करने की कोशिश करेगा।
हालांकि, आपके पास खरोंच से शुरू होने का समय नहीं है
यदि आपके पास एक ऐप लिखा है, तो इसमें कुछ काफी हद तक वास्तु परिवर्तन शामिल हो सकते हैं। यदि आप एक मौजूदा फ़ॉर्म को बढ़ाने के लिए कोणीय का उपयोग करने की कोशिश कर रहे हैं, तो स्क्रैच से पूरे एकल पृष्ठ ऐप का निर्माण करने के बजाय, आप फॉर्म से मूल्य खींच सकते हैं और इसे एक निर्देश का उपयोग करके लिंक समय पर स्कोप में स्टोर कर सकते हैं। कोणीय फिर मान को फॉर्म में वापस बाँध देगा और इसे सिंक में रखेगा।
एक निर्देश का उपयोग करना
आप फॉर्म से मूल्य खींचने के लिए अपेक्षाकृत सरल निर्देश का उपयोग कर सकते हैं और इसे वर्तमान दायरे में लोड कर सकते हैं। यहाँ मैंने एक initFromForm निर्देश को परिभाषित किया है।
var myApp = angular.module("myApp", ['initFromForm']);
angular.module('initFromForm', [])
.directive("initFromForm", function ($parse) {
return {
link: function (scope, element, attrs) {
var attr = attrs.initFromForm || attrs.ngModel || element.attrs('name'),
val = attrs.value;
if (attrs.type === "number") {val = parseInt(val)}
$parse(attr).assign(scope, val);
}
};
});
आप देख सकते हैं कि मैंने मॉडल नाम पाने के लिए कुछ कमियां परिभाषित की हैं। आप इस निर्देश को ngModel निर्देश के साथ संयोजन में उपयोग कर सकते हैं, या यदि आप चाहें तो $ स्कोप के अलावा किसी अन्य चीज़ से बाँध सकते हैं।
इसे इस तरह उपयोग करें:
<input name="test" ng-model="toaster.test" value="hello" init-from-form />
{{toaster.test}}
ध्यान दें कि यह भी textareas के साथ काम करेगा, और ड्रॉपडाउन का चयन करेगा।
<textarea name="test" ng-model="toaster.test" init-from-form>hello</textarea>
{{toaster.test}}