2013-08-08 4 views
21

मुझे एंगुलरजेएस पर एक वीडियो से इस प्रसिद्ध उद्धरण को याद रखना याद है कि हमेशा एक का उपयोग करना चाहिए। (डॉट) अपने मॉडल में। तो यह मेरे विचार में अच्छा काम करता हैयदि आप अपने AngularJS मॉडल में ए (डॉट) का उपयोग नहीं कर रहे हैं तो आप इसे गलत कर रहे हैं?

खैर मैं इस मैं

var item = {} 
    item.title = "Easy Access to support"; 
    item.available = true; 
    item.price = 31.67; 

है का कहना है कि पालन करने के लिए कोशिश कर रहा हूँ मैं

{{ item.title }} 
    {{ item.available }} 

मैं एक डॉट उपयोग कर रहा हूँ तो मुझे लगता है यह अच्छा है।

लेकिन मेरे पास कुछ गुण हैं जो मैं मॉडल के हिस्से पर विचार नहीं करता लेकिन शायद मैं गलत हूं। उदाहरण के लिए मेरे पास एक ऐसी संपत्ति है जिसका उपयोग मैं एनजी-अक्षम का उपयोग करके बटन को सक्षम या अक्षम करने के लिए करता हूं, मैंने इसे डॉट प्रारूप का उपयोग करके दर्ज किया है। इसका मूल रूप से तो

$scope.disableButton = true; 

की तरह प्रवेश किया और मैं इसे

ng-disable="disableButton"...... 

तरह का उपयोग मैं मॉडल "आइटम" के इस हिस्से बना दें? या बस एक और जेएस ऑब्जेक्ट बनाएं ताकि मैं इस डॉट का उपयोग करके इस संपत्ति को पकड़ सकूं?

कोई भी जानता है कि यह स्वीकार्य है या मुझे एक .dot के साथ सबकुछ (यहां तक ​​कि इन साधारण गुणों) कर रहे हैं ??

धन्यवाद

+3

यहां वीडियो में सटीक जगह है जहां मिस्को का उल्लेख है कि आपको एनजी मॉडल के साथ "डॉट" की आवश्यकता है: http://www.youtube.com/watch?v=ZhfUv0spHCY&feature=youtu.be&t=32m51s –

+0

एक स्थान जहां "एक बिंदु का उपयोग करें" अलग-अलग होता है यदि आपका निर्देश एक ngModel लेता है लेकिन अन्य निर्देशों को लपेटता है और अन्य निर्देशों के माध्यम से ngModel पास करता है। जैसे ही पहला पास होता है, डॉट नोटेशन खो जाता है, क्योंकि वैरिएबल को पहले निर्देश के रूप में जल्द ही "ngModel" (या जो कुछ भी आप सेट करते हैं) में बदल दिया जाता है। वहां से, इसे "एनजी मॉडेल" के नाम से जाना जाता है जो डॉट नोटेशन के अनुपस्थित है और इसे आदिम के रूप में माना जाता है, जो नेस्टेड निर्देश श्रृंखला –

उत्तर

41

"वहाँ हमेशा अपने मॉडल में एक बिंदु होना चाहिए" ngModel को दर्शाता है। यह निर्देश दो-तरफा बाध्यकारी करता है। यदि आप दो-तरफा एक आदिम (जैसे आपके मामले में एक बूलियन) से बंधे हैं, तो सेटटर इसे उस दायरे के बजाए वर्तमान दायरे पर सेट करेगा जिस पर इसे परिभाषित किया गया है, जिससे आपके सिर में एक बड़ा उपयोगकर्ता हो सकता है, बहुत से बच्चे के scopes के साथ इंटरफ़ेस। यह ngDisable जैसे अन्य निर्देशों का संदर्भ नहीं देता है। इस विशिष्ट मुद्दे पर अधिक जानकारी के लिएthis explanation देखें।

नमूना परिदृश्य: $scope.foo = "bar" के साथ एक अभिभावक दायरा, और <input type="text" data-ng-model="foo"> के साथ एक बच्चे का दायरा। यह शुरुआत में bar प्रदर्शित करेगा, लेकिन एक बार जब उपयोगकर्ता मान बदलता है, तो fooबच्चे स्कोप पर बनाया जाएगा और बाध्यकारी उस मान को पढ़ और लिख देगा। माता-पिता का foobar रहेगा। उम्मीद है कि यह अच्छी तरह से सारांशित करता है।

तो ngModel प्रयोजनों के लिए, आपको ऐसे बाध्यकारी मुद्दों के आसपास काम करने के लिए एक वस्तु बनाना पड़ सकता है, लेकिन किसी अन्य निर्देश के लिए आपके पास नियमित, तार्किक समूह होना चाहिए।

+1

को आगे बढ़ाने की अपनी क्षमता को प्रभावित करता है, यह एक महान स्पष्टीकरण था, धन्यवाद। – Martin

+2

'नियंत्रक एएस' वाक्यविन्यास इस उद्देश्य के लिए बहुत अच्छा काम करता है (और सामान्य रूप से गुंजाइश भ्रम से बचने के लिए)। – GBa

+1

सबसे स्पष्ट, सबसे संक्षिप्त स्पष्टीकरण मैंने इसके लिए देखा है। –

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

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