मैं अक्सर पाते हैं कि आप और अधिक कार्यक्षमता चाहते हैं जब उपयोगकर्ता सेटिंग्स/जानकारी को अद्यतन करने के लिए अनुमति: आप भी myForm
वस्तु (गैर इनपुट क्षेत्र वस्तुओं एक $
उपसर्ग के साथ कुंजी) से अधिक पुनरावृति कर सकते हैं। जैसे सूचना को रीसेट करने या संपादन को रद्द करने और वापस वापस करने की क्षमता। मुझे पता है कि अनुरोध का हिस्सा नहीं था, लेकिन जब आप इसे मानते हैं तो यह अन्य चीजों को आसान बनाता है।
आप सहेजे गए मानों को संग्रहीत करते हैं और संपादित मान भी रखते हैं, तो आप सहेजे गए मानों पर वापस रीसेट कर सकते हैं क्योंकि वे नहीं बदलते हैं। फिर आप यह निर्धारित करने के लिए 2 की तुलना कर सकते हैं कि क्या बदल गया है।
कार्य उदाहरण: कंसोल लॉग क्या बदल गया जब आप उदाहरण में प्रपत्र सबमिट देखने के लिए पर http://jsfiddle.net/TheSharpieOne/nJqTX/2/
देखो। यह एक वस्तु है जिसे आप आसानी से PUT के माध्यम से भेज सकते हैं।
function myCtrl($scope) {
$scope.user = {
firstName: "John",
lastName: "Smith",
email: "[email protected]"
};
$scope.reset = function() {
angular.copy($scope.user, $scope.edit);
};
$scope.submitForm = function(){
console.log(findDiff($scope.user, $scope.edit));
// do w/e to save, then update the user to match the edit
angular.copy($scope.edit, $scope.user);
};
function findDiff(original, edited){
var diff = {}
for(var key in original){
if(original[key] !== edited[key])
diff[key] = edited[key];
}
return diff;
}
}
नोट: findDiff सरल है, यह मानता है कि दो ऑब्जेक्ट्स एक ही कुंजी हैं और केवल मान बदल गए हैं। हम ऑब्जेक्ट्स की प्रतिलिपि बनाते हैं ताकि वे एक ही ऑब्जेक्ट के 2 संदर्भ न बनें, लेकिन वास्तव में 2 ऑब्जेक्ट्स।
मान लें कि उपयोगकर्ता पृष्ठ में प्रवेश करता है और 'firstName' फ़ील्ड खाली है। इस बिंदु पर '$ scope.firstName। $ pristine' को 'true' पर सेट किया गया है। उपयोगकर्ता फिर "foo" में प्रवेश करता है। '$ scope.firstName। $ pristine' अब' false' पर सेट है। उपयोगकर्ता इनपुट को खाली छोड़ने के लिए तीन बार बैकस्पेस करता है, क्योंकि यह मूल रूप से था। '$ scope.firstName। $ pristine' को' false' पर सेट किया जाना जारी है। –
@ वाल्टररमन यह सही है। '$ pristine' परिभाषित किया गया है [दस्तावेज़ों में] (https://docs.angularjs.org/api/ng/type/form.FormController) के रूप में:" सही है अगर उपयोगकर्ता ने अभी तक फ़ॉर्म के साथ बातचीत नहीं की है " –
मुझे पसंद है फोकस सेट करने या अद्यतन तत्व के पृष्ठभूमि रंग को अद्यतन करने के लिए। मैं 'मूल्य' ऑब्जेक्ट का उपयोग करके ऐसा कैसे कर सकता हूं? या मुझे किस वस्तु का उपयोग करना चाहिए और कौन सी संपत्ति? –