क्या सेवा के अंदर वस्तुओं की एक सरणी पर $watch
सेट करना संभव है (मुझे $watch
घोषणा स्वयं सेवा के अंदर होने की इच्छा है)?
उत्तर
आप $rootScope
इंजेक्शन करके घड़ियों के सेट में कोई अभिव्यक्ति जोड़ सकते हैं और फ़ंक्शन का उपयोग $watch
विधि पर पहला तर्क कर सकते हैं। छद्म कोड:
$rootScope.$watch(function() {
return //value to be watched;
}, function watchCallback(newValue, oldValue) {
//react on value change here
});
$watch
विधि करने के लिए तृतीय, बूलियन तर्क के बारे में मत भूलना। यदि आप परिवर्तनों के लिए एक संपूर्ण वस्तु को गहराई से देखना चाहते हैं तो आपको true
निर्दिष्ट करने की आवश्यकता है।
उनकी प्रकृति से सेवाएं कक्षाओं और घर के तरीकों की तरह हैं।
app.service('myservice',function(){
this.listen = function($scope) {
$scope.$watch(function(){return someScopeValue},function(){
//$scope.dosomestuff();
});
}
});
//your controller
function myCtrl($scope,myservice) {
$scope.listen = function() {
myservice.listen($scope);
}
//call your method
$scope.listen();
}
अद्यतन:: आप एक तरीका है जिसके आप अपने नियंत्रक जो तर्क गुंजाइश है और एक घड़ी अभिव्यक्ति लागू होता है से फोन सेट कर सकते हैं आप एक सेवा के अंदर एक निजी स्थानीय चर देखने का प्रयास कर रहे हैं, तो स्वीकार किए जाते हैं को देखने के रूट रूटस्कोप का उपयोग कर जवाब दें। यदि आप उपरोक्त की तुलना में स्थानीय दायरे में $ स्कोप वैरिएबल देखने की कोशिश कर रहे हैं तो आपकी सबसे अच्छी शर्त है। वे दो बहुत ही अलग चीजें प्राप्त कर रहे हैं।
यह एक बेवकूफ सवाल की तरह प्रतीत हो सकता है लेकिन आप एक फ़ंक्शन के अंदर 'myservice.listen ($ scope)' क्यों डाल रहे हैं? क्या यह पूरे कोड में आसानी से इसका उपयोग कर रहा है या क्या कोई महत्वपूर्ण कारण है? इसके अलावा, अगर मैं एक कारखाने में $ घड़ी डालता हूं, तो क्या यह अभी भी काम करेगा? –
क्या आप यह स्पष्ट कर सकते हैं कि आप क्या हासिल करना चाहते हैं? जैसा कि मैं समझता हूं, आपको सर्वर से ऑब्जेक्ट्स की एक सरणी मिल रही है जो आपके मॉडल के रूप में है। तो फिर यह स्पष्ट नहीं है:
- आप यदि सरणी में कुछ वस्तुओं बदल दिया गया है सत्यापित करने के लिए करना चाहते हैं (शायद के बाद से मामले में सर्वर के लिए पिछले कॉल आप बार-बार होने पूलिंग करते हैं)?
- क्या आप सत्यापित करना चाहते हैं कि सरणी में कुछ ऑब्जेक्ट उपयोगकर्ता द्वारा कुछ फ्रंट-एंड कंट्रोल तत्वों के माध्यम से बदल दिए गए हैं?
मामले 1 में, आप वास्तव में $ उपयोग करने के लिए घड़ी (या बल्कि $ watchCollection) की जरूरत नहीं है, लेकिन आप सरणी आप सर्वर से प्राप्त के माध्यम से पुनरावृति और परिवर्तन (एक ही क्या $ watchColleciton करना होगा की पुष्टि करनी चाहिए)। यदि ऑब्जेक्ट वर्तमान में आपके पास अलग है - तो आप इस तत्व पर ऑब्जेक्ट कॉल करें। $ Save()।
2 मामले में, $ सेवा कोलेक्शन() का उपयोग अपने सेवा फ़ंक्शन के पैरामीटर के रूप में पारित $ स्कोप पर करें या $ रूटस्कोप का उपयोग करें यदि आप $ arrayScope में अपनी सरणी रखते हैं।
यदि आप परिदृश्यों को स्पष्ट करेंगे तो मैं आपको वास्तविक कोड प्रदान कर सकता हूं।
अरे बस एक ऐसी स्थिति थी जहां मेरे पास 2 अलग-अलग नियंत्रकों पर एक बहुत बड़ा घड़ी सेटअप था।
मैं किसी भी कोड मैं सिर्फ अपनी सेवा में कार्य करने के लिए परिभाषित नकल नहीं करना चाहता था के रूप में:
angular
.module('invoice')
.factory('invoiceState', function() {
var invoice = {
client_info: {
lastname: "",
firstname: "",
email: "",
phone: "",
id_client: "",
...
}
}
invoice.watchAccommodation = function (newVal, oldVal) {
var accommodation = newVal;
//Whatever you would normally have in your watch function
}
तो मैं सिर्फ इस समारोह किसी भी नियंत्रक की घड़ी है जिसमें मैं सेवा इंजेक्शन में कॉल कर सकते हैं
function NewInvoiceCtrl(invoiceState) {
$scope.$watch('invoice.accommodation',invoiceState.watchAccommodation, true);
}
मैं तो मैं वास्तव में इस दृष्टिकोण का प्रदर्शन पहलुओं में नहीं जा सकते, लेकिन यह काम करता है AngularJS का अधिक अनुभव नहीं है,)
- 1. एक सेवा के अंदर एंड्रॉइड वेबव्यू?
- 2. कंसोल। राइटलाइन() एक विंडोज सेवा के अंदर?
- 3. जावा NIO घड़ी सेवा दोनों 'ENTRY_CREATE' और 'ENTRY_MODIFY' बनाया है जब एक नई फ़ाइल घड़ी फ़ोल्डर
- 4. यूनिक्स sys/classes/gpio फ़ाइलों के लिए एनआईओ घड़ी सेवा
- 5. एंगुलरजेएस सेवा परीक्षण के अंदर सेवा नकली इंजेक्ट
- 6. किसी सेवा के अंदर एक थ्रेड को रोकना
- 7. क्या एक रिपोर्टिंग सेवा रिपोर्ट के अंदर एक वेब सेवा कॉल करना संभव है?
- 8. एक घड़ी चक्र
- 9. डॉकर-कंपोज़ सेवा के अंदर कोई इंटरनेट
- 10. AngularJS $ खिड़की घड़ी निर्देश
- 11. घड़ी
- 12. एक ब्लॉक के अंदर एक चर के अंदर एक चर के अंदर एक वैरिएबल असाइन करें
- 13. $ घड़ी समूह बनाम $ घड़ी चयन?
- 14. घड़ी विंडो में एक सीईसी दिखाएं
- 15. $ घड़ी निर्देश
- 16. मैं एक सेवा के अंदर एकाधिक सेवा फैब्रिक अभिनेता प्रकार कैसे होस्ट कर सकता हूं?
- 17. कंकड़ घड़ी में एक फॉर्म कैसे बनाएं
- 18. एक गल्प घड़ी कार्य रोको?
- 19. Vue.js घड़ी सरणी
- 20. एक अज़ूर वर्कर रोल के अंदर चलाने के लिए एक सेवा प्राप्त करना
- 21. घड़ी संपूर्ण वस्तु (गहरी घड़ी) AngularJS
- 22. एनपीएम रन घड़ी और एनपीएम रन घड़ी के बीच अंतर
- 23. कोणीय की $ घड़ी
- 24. एक गलत सिस्टम घड़ी से निपटने
- 25. फ़ायरफ़ॉक्स डेवलपर संस्करण अनुपलब्ध घड़ी घड़ी कार्यक्षमता
- 26. ब्राउज़र घड़ी कैश व्यवहार करता है यदि स्थानीय घड़ी सर्वर घड़ी के साथ संगत नहीं है?
- 27. रेल घड़ी घड़ी कोड नहीं चला रहा
- 28. ऐप्पल घड़ी
- 29. घड़ी कनेक्टिविटी
- 30. `std :: घड़ी()`
यदि आप कोई आपत्ति नहीं है, मैं तुम्हें थानेदार चाहते हैं हम आपको पहले फ़ंक्शन से रिटर्निंग सेवा मान का संदर्भ कैसे देते हैं। मैंने अपनी पूरी कोशिश की, लेकिन बदलावों के लिए देखने में सफल नहीं हुआ।वही मूल्य लगातार, बार-बार लौटाया जा रहा था। – Birowsky
@ बिरोव्स्की क्या आपने '$ watchCollection' की कोशिश की है? –
यह मदद नहीं करता है क्योंकि यह पूरे एप्लिकेशन के लिए रूटस्कोप देख रहा है। – btm1