2012-11-07 9 views
23

के माध्यम से अपडेट करने के लिए कैसे एक बाध्यता कर सकता हूं मेरे पास एक डिस्प्ले नियंत्रक और प्रबंधन नियंत्रक है। मेरे डिस्प्ले कंट्रोलर के अंदर, मेरे पास चुने गए आइटमों की सूची के साथ एक ड्रॉपडाउन चयनकर्ता है।AngularJS का उपयोग करके, मैं <select> तत्व को एक विशेषता के साथ

मैं सूची को अद्यतन करने के लिए डिस्प्ले एरिया ड्रॉपडाउन प्राप्त कर सकता हूं, आइटम प्रबंधन प्रबंधन में जोड़े गए हैं, लेकिन मैं यह नहीं समझ सकता कि ड्रॉपडाउन में नवीनतम आइटम का चयन कैसे करें।

<div ng-controller="MyDisplayCtrl"> 
    <select ng-model="item" ng-options="i.name for i in items"> 
    </select> 
</div> 

मैंने अपनी स्थिति को स्पष्ट करने के लिए एक jsfiddle बनाया है। आखिरकार, मेरा सवाल यह है कि उस एनजी-मॉडल = "आइटम" को किसी सेवा द्वारा अपडेट किए गए डेटा स्रोत से कैसे बांधें।

http://jsfiddle.net/whtevn/mUhPW/2/

उत्तर

15

ठीक है, ऐसा लगता है कि मैं इस के लिए एक बहुत संतोषजनक जवाब मिल गया है।

मैं नियंत्रक के माध्यम से भंडारण वस्तु ही उजागर

function MyDisplayCtrl($scope, ItemStore) { 
    $scope.items = ItemStore.items; 
    $scope.item = ItemStore.currentItem; 

    // expose the itemstore service to the dom 
    $scope.store = ItemStore 

    $scope.getItem = function(){ 
     return(ItemStore.currentItem); 
    } 
} 

और फिर CurrentItem संबोधित सीधे

<div ng-controller="MyDisplayCtrl"> 
    <select ng-model="store.currentItem" ng-options="i.name for i in items"> 
    </select> 
</div> 

http://jsfiddle.net/whtevn/Cp2RJ/3/

+0

यह अच्छी तरह से काम करता है, और मैं अपने डिफ़ॉल्ट पैटर्न के रूप में यह करने के लिए ले जाया गया है, लेकिन अगर किसी को एक कारण यह है कि मैं अपने विचारों में उजागर सेवाएं नहीं बुला किया जाना चाहिए, मैं इसे सुनने के लिए – whtevn

+0

एक कारण यह चाहते हैं मैं कैशिंग के बारे में सोच सकता हूँ। यदि आपकी सेवा की कार्यक्षमता बदलती है, तो आपको अपने कंट्रोलर के अंदरूनी हिस्सों की बजाय आक्रामक रूप से कैश किया जा सकता है, जो आपके दृश्य को संशोधित करना होगा। मेरे अनुभव में बाहरी जावास्क्रिप्ट फ़ाइलों को अनचाहे करना आसान है और यह चिंताओं का शुद्ध पृथक्करण होगा। अपने नियंत्रक को दायरे को पॉप्युलेट करने दें और आपका दृश्य उस दायरे तक पहुंचने दें। –

+0

एक वीडियो के माध्यम से मैंने एक प्रशिक्षण स्थल पर देखा, विचारों में उजागर सेवाओं का उपयोग करना अच्छा अभ्यास है। हालांकि, चरों तक पहुंच प्रदान करने के बजाय एक खुलासा मॉड्यूल पैटर्न का उपयोग करके सेवाओं को लिखित और निर्माण की सिफारिश की जाती है, जो उन कार्यों और गुणों को वापस लौटाते हैं जिन्हें सार्वजनिक रूप से स्वीकार्य होना चाहिए: http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript। इसके अलावा, सेवाएं .service के बजाय। फैक्टरी विधि का उपयोग करके बनाई गई थीं। –

संबंधित मुद्दे