मेरे पास एक वेब पेज है जो एकल इकाई के लिए संपादक के रूप में कार्य करता है, जो $ स्कोप में एक गहरे ग्राफ के रूप में बैठता है। अपने REST API ($ संसाधन के माध्यम से) के बाद मुझे एक प्रतिक्रिया मिलती है, मैं 'फ़ील्डकेंटर' में एक घड़ी जोड़ता हूं। मैं इस घड़ी का उपयोग यह जानने के लिए कर रहा हूं कि पृष्ठ / इकाई "गंदा" है या नहीं। अभी मैं सेव बटन को उछाल रहा हूं, लेकिन वास्तव में मैं सेव बटन को तब तक अदृश्य बनाना चाहता हूं, जब तक यूजर मॉडल को मैली न कर दे।
मुझे जो मिल रहा है वह घड़ी का एक ट्रिगर है, जो मुझे लगता है कि हो रहा है क्योंकि .fieldcontainer = ... असाइनमेंट मेरी घड़ी बनाने के तुरंत बाद होता है। मैं शुरुआती झूठे अलार्म को अवशोषित करने के लिए एक "डर्टीकाउंट" संपत्ति का उपयोग करने के बारे में सोच रहा था, लेकिन यह बहुत हैकिंग लगता है ... और मुझे लगा कि इससे निपटने के लिए "कोणीय मुहावरेदार" तरीका होना चाहिए - मैं केवल एक ही नहीं हूं एक गंदे मॉडल का पता लगाने के लिए एक घड़ी का उपयोग करना।
यहां वह कोड है जहां मैंने अपनी घड़ी सेट की है:
$scope.fieldcontainer = Message.get({id: $scope.entityId },
function(message,headers) {
$scope.$watch('fieldcontainer',
function() {
console.log("model is dirty.");
if ($scope.visibility.saveButton) {
$('#saveMessageButtonRow').effect("bounce", { times:5, direction: 'right' }, 300);
}
}, true);
});
मुझे लगता है कि वहाँ एक "अगर (गंदे> 0)" के साथ मेरे "UI गंदे" कोड की रक्षा करने की तुलना में यह करने के लिए एक क्लीनर तरीका हो गया है रखने के लिए ...
undefined
। इसका एक डिफ़ॉल्ट मूल्य है जो मेरे मॉडल अपडेट के मामले में आवश्यक है जो सभी जानकारी के साथ नहीं आया है। इसलिए कुछ मान नहीं बदलते हैं लेकिन उन्हें ट्रिगर करना पड़ता है।