angularjs - updating data between controller, service and directive -
मैंने निम्नानुसार एक साधारण सरल परीक्षण ऐप लिखा है:
angular.module ( 'TddApp', [])। नियंत्रक ('मेनक्रूटन', फ़ंक्शन ($ का दायरा, $ रूट स्कोप, बैटलस्पेस सेवा) {$ scope.displayEvents = [{id: 1, नाम: 'बेलारूस v यूक्रेन', होमटैम: 'बेलारूस', दूरसंचार: 'यूक्रेन', बाजार: {घर: '2/1', ड्रा: '3/2', दूर: '5/3'}, प्रदर्शन: सत्य}]; $ scope.betslipArray = BetslipService.betslipArray; $ Scope.oddsBtnCallback = BetslipService.addToBetslip; $ scope.clearBetslip = BetslipService.clearBetslip;})। डायरेक्टिव ('अजीबबटन', फ़ंक्शन () {रिटर्न {टेम्प्लेट: '& lt; div class = "odds-btn" & gt; {{मार्केट '}', कॉलबैक: '& amp;;}, लिंक: फ़ंक्शन (क्षेत्र, तत्व): & quot;; & lt; / div & gt;', प्रतिस्थापित करें: सही, गुंजाइश: {बाजार: '@', बाजार नाम: '@', eventName: '@', कॉलबैक: '& amp; {Element.on ('click', function () {scope.callback ({name: scope.eventName, marketName: scope.marketName, odds: scope.market})}})}}}}}}) .factory (' BetslipService ', फ़ंक्शन ($ रूटस्स्कोप) {var rtnObject = {}; rtnOb Ject.betslipArray = []; RtnObject.addToBetslip = फ़ंक्शन (नाम, बाज़ार नाम, बाधाएं) {rtnObject.betslipArray.push ({eventName: नाम, बाज़ार नाम: बाजार नाम, बाधाएं: बाधाएं}); }; RtnObject.clearBetslip = फ़ंक्शन () {rtnObject.betslipArray = []; }; रिटर्न आरटीएन ऑब्जेक्ट; }); मैंने एक नियंत्रक चर को एक सरणी निर्दिष्ट की है। मैंने भी सरणी को संशोधित करने के लिए कार्य सौंपा है। ऑब्जेक्ट को ऑब्जेक्ट में जोड़ने के लिए कॉलबैक अलग-थलग क्षेत्र के साथ एक निर्देश द्वारा कहा जाता है। कुछ अजीब व्यवहार हो रहा है जो मुझे काफी समझ में नहीं आता है:
= & gt; निर्देश पर क्लिक सेवा में कॉलबैक चलाता है मैंने कुछ डीबगिंग किया है और ऐसा लगता है कि नियंत्रक चर अद्यतन किया गया है लेकिन यह html में नहीं दिखाया गया है। = & Gt; सरणी साफ करने के लिए बटन क्लिक करना अपेक्षित रूप से काम नहीं कर रहा है पहली बार यह एक तत्व को प्रदर्शित करने के लिए पैदा करता है, उसके बाद इसका कोई प्रभाव नहीं पड़ता।
मुझे लगता है कि यह नेस्टेड एनजी-पुनरावृत्ति के साथ अपना स्वयं का स्कोप बनाने के लिए हो सकता है
< मजबूत> एनबी
मैंने इस सेवा में फ़ंक्शन को बदलकर समाशोधन नहीं हटाया:
जबकि (rtnObject.betslipArray.length & gt; 0) {RtnObject.betslipArray.pop (); } / के बजाय rtnObject.betslipArray = []; यह समझ में आता है कि सर्विस वैरिएबल को एक नए ऑब्जेक्ट पर इंगित किया जा रहा था, जबकि पुराने संदर्भ नियंत्रक में जारी रहेगा।
मुझे लपेटकर एक दायरे में निर्देशक में कॉलबैक कॉल। $ लागू ()। यह हिस्सा मैं सच में समझ में नहीं आया। निर्देश कैसे लागू हो सकता है? निदेशालय में आने वाले आवेदन () को नियंत्रक क्षेत्र पर प्रभाव पड़ता है, जब निदेशालय का पृथक क्षेत्र होता है? अद्यतन बेला:
किसी भी विचार की बहुत सराहना की
jsfiddle:
सी
मुझे यहां काम कर रहा है:
$ q , $ scope। $ Emit और $ डायरेक्टिव / सर्विस और कंट्रोलर के बीच संचार में मदद करने के लिए $ टाइमआउट क्लाउज। मैं यह भी कहना चाहूंगा कि मैं एक कंट्रोलर $ scope, / Code> आपको कंट्रोलर में फ़ंक्शन को परिभाषित करना चाहिए जो सेवा फ़ंक्शन को कॉल करता है। इसके बजाय:
$ scope.clearBetslip = BetslipService.clearBetslip; इसे करें:
$ scope.clearBetslip = फ़ंक्शन () {BetslipService.clearBetslip ()। तब (फ़ंक्शन () {$ scope.betslipArray = BetslipService.getBetslipArray ();}); };
Comments
Post a Comment