/ / ng-model - angularjs, angularjs-directive, angularjs-scope का उपयोग करके निर्देश के अंदर $ पैरेंट दायरे को छायांकित करने से कैसे रोकें

एनजी-मॉडल - एंजुलरजेस, एंजुलरजेस-डायरेक्टिव, एंजुलरजेस-स्कोप का उपयोग करके निर्देश के अंदर $ पैरेंट स्कोप को कैसे रोकें

मैं टेबल सेटिंग्स को संभालने और विशेष रूप से पेज साइज को संभालने के निर्देश पर काम कर रहा हूं।

<table-settings page-size="pagination.pageSize" sizes="PAGE_SIZES" </table-settings>

मैं बाद में छायांकन की समस्या का सामना कर रहा हूँ pageSize परम एक प्राचीन है जो एक के लिए बाध्य है ng-model एक और निर्देश के अंदर (एक ड्रॉपडाउन मेनू)।

मुझे पता है कि मैं इसके बजाय किसी ऑब्जेक्ट का उपयोग कर सकता हूं pageSize = {value:5} लेकिन यह उपयोग करने के लिए आसान / प्राकृतिक नहीं है।

मैं $ माता-पिता का उपयोग करने का बड़ा प्रशंसक नहीं हूं ng-model="$parent.pageSize" चूंकि मुझे यकीन नहीं है कि यह कौन सा $ माता-पिता इसका उल्लेख करता है।

तो मैंने निर्देश के लिए एक सूचक जोड़ने का फैसला किया "दायरा, कि मैं अपने बाध्यकारी" दायरे "के लिए उपयोग कर सकते हैं टेम्पलेट के अंदर। (नियंत्रक / नियंत्रक के रूप में वाक्यविन्यास का उपयोग करने की तरह)

मूल रूप से यह इस तरह दिखता है

link: function(scope, elem, attr, controller) {
scope.tableSettings = scope;
}

और यह इस तरह प्रयोग किया जाता है:

<input type="text" ng-model="tableSettings.pageSize">

तो मुझे आश्चर्य है कि यह एक अच्छा या बुरा विचार है? और यदि यह एक बुरा विचार है, तो यदि आपके पास बेहतर है?

धन्यवाद!

उत्तर:

जवाब के लिए 0 № 1

यदि आपके निर्देश को हमेशा नियंत्रक के साथ एक विशिष्ट माता-पिता निर्देश की आवश्यकता होती है तो आप इसका उपयोग कर सकते हैं require आपके निर्देशक सेटिंग्स में विकल्प कि नियंत्रक को माता-पिता होने की आवश्यकता होती है (आवश्यक रूप से प्रत्यक्ष माता-पिता नहीं)।

एक बोनस के रूप में आप उस नियंत्रक को इंजेक्शन देते हैं link कार्य करें और आप वहां से अपने पैरामीटर ले सकते हैं।

दस्तावेज़ों में इसके बारे में और पढ़ें (https://docs.angularjs.org/guide/directive - नीचे "संचार करने वाले निर्देश बनाने" के लिए देखो)