मैं बस कोणीय के साथ शुरू कर रहा हूं, और कुछ पुराने JQuery प्लग इन को कोणीय निर्देशों में परिवर्तित करने पर काम कर रहा हूं। मैं अपने (तत्व) निर्देश के लिए डिफ़ॉल्ट विकल्पों के एक सेट को परिभाषित करना चाहूंगा, जिसे किसी विशेषता में विकल्प मान निर्दिष्ट करके ओवरराइड किया जा सकता है।
मैं जिस तरह से दूसरों को यह किया है के लिए चारों ओर एक नज़र है, और कोणीय- ui पुस्तकालय में ui.bootstrap.pagination कुछ इसी तरह से लगता है।
पहले सभी डिफ़ॉल्ट विकल्प एक स्थिर ऑब्जेक्ट में परिभाषित किए गए हैं:
.constant('paginationConfig', {
itemsPerPage: 10,
boundaryLinks: false,
...
})
फिर एक getAttributeValue
उपयोगिता फ़ंक्शन निर्देशक नियंत्रक से जुड़ा हुआ है:
this.getAttributeValue = function(attribute, defaultValue, interpolate) {
return (angular.isDefined(attribute) ?
(interpolate ? $interpolate(attribute)($scope.$parent) :
$scope.$parent.$eval(attribute)) : defaultValue);
};
अंत में, यह लिंकिंग फंक्शन में प्रयोग किया जाता है जैसा कि विशेषताओं में पढ़ा जाता है
.directive('pagination', ['$parse', 'paginationConfig', function($parse, config) {
...
controller: 'PaginationController',
link: function(scope, element, attrs, paginationCtrl) {
var boundaryLinks = paginationCtrl.getAttributeValue(attrs.boundaryLinks, config.boundaryLinks);
var firstText = paginationCtrl.getAttributeValue(attrs.firstText, config.firstText, true);
...
}
});
यह डिफ़ॉल्ट मानों के एक सेट को बदलने के लिए मानक के रूप में कुछ के लिए एक जटिल सेटअप की तरह लगता है। क्या ऐसा करने के लिए कोई अन्य तरीके हैं जो सामान्य हैं? या हमेशा उपयोगिता फ़ंक्शन को परिभाषित करना सामान्य हैgetAttributeValue
इस तरह से और विकल्प ? मुझे यह पता लगाने में दिलचस्पी है कि इस सामान्य कार्य के लिए लोगों की अलग-अलग रणनीतियाँ क्या हैं।
इसके अलावा, एक बोनस के रूप में, मुझे स्पष्ट नहीं है कि interpolate
पैरामीटर की आवश्यकता क्यों है।
ui.bootstrap.pagination
चीजों को और अधिक जटिल तरीके से करता है? यह सोच रहा था कि यदि संकलित फ़ंक्शन का उपयोग करते हुए बाद में किए गए किसी भी विशेषता परिवर्तन को प्रतिबिंबित नहीं किया जाएगा, लेकिन यह सच नहीं दिखता है क्योंकि इस चरण में केवल डिफ़ॉल्ट सेट किए गए हैं। अनुमान है कि यहां कुछ व्यापार किया जाना चाहिए।