कहो हम अपनी साइट पर तीन बटन है:क्या AngularJS नियंत्रकों में कार्यक्षमता वाली वस्तुओं को बनाने या ढीले कार्यों को बनाना बेहतर है?
<button>Like</button>
<button>Dislike</button>
<button>Flag</button>
प्रत्येक बटन अपने-अपने कार्यों कॉल करेगा:
<button ng-click="like()">Like</button>
<button ng-click="dislike()">Dislike</button>
<button ng-click="flag()">Flag</button>
और नियंत्रक में यह कुछ इस तरह दिख सकता है:
$scope.like = function() {
return likes + 1;
}
$scope.dislike = function() {
return dislikes + 1;
}
$scope.flag = function() {
return flags + 1;
}
बहुत से दर्शक के साथ $scope
को छेड़छाड़ करने के बाद प्रदर्शन के लिए बुरा है, यह बेहतर नहीं होगा:
$scope.actions = {
like: function() {
return likes + 1;
},
dislike: function() {
return dislikes + 1;
},
flag: function() {
return flags + 1;
}
}
और फिर इसे पसंद का उपयोग कर:
<button ng-click="actions.like()">Like</button>
<button ng-click="actions.dislike()">Dislike</button>
<button ng-click="actions.flag()">Flag</button>
कौन सा करने से पर नजर रखने वालों की संख्या कम हो जाएगा, यह भी वर्गीकृत किया कार्यक्षमता बनाने के लाभ दे रही है। बेहतर पठनीयता के लिए अग्रणी भी।
मेरे दृष्टिकोण से यह आपके नियंत्रक में ढीले कार्यों की तुलना में अधिक समझ में आता है, खासकर जब सभी नियंत्रकों को हल्के वजन नहीं बनाया जा सकता है।
यह बात जो मुझे इस दृष्टिकोण पर संदेह करेगी वह यह है कि मैंने कभी भी इस विधि का उपयोग करके किसी भी उदाहरण में कभी नहीं देखा है। क्या इसका कोई कारण है?
आमतौर पर प्रयुक्त डिज़ाइन पैटर्न, सर्वोत्तम अभ्यास और प्रदर्शन के संदर्भ में उपयोग करने के लिए कौन सा दृष्टिकोण बेहतर होगा?
संपादित करें: सुझाव दिए गए हैं कि मुझे इसके बजाय controller as
वाक्यविन्यास का उपयोग करना चाहिए, मुझे इसके बारे में पता है लेकिन यह सीधे मेरे प्रश्न का उत्तर नहीं देता है। जैसा कि मैं जानना चाहता हूं कि ऊपर वर्णित दो विधियों में से कौन सा तरीका controller as
वाक्यविन्यास का उपयोग नहीं कर रहा है।
वॉचर्स की संख्या में बदलाव नहीं आया। सबसे पहले मुझे यकीन नहीं है, लेकिन मैंने सोचा कि एनजी-क्लिक एक वॉचर नहीं जोड़ता है, लेकिन यदि यह जोड़ता है, तो दोनों उदाहरण बिल्कुल वही हैं। दूसरा $ स्कोप इश्यू (नाम टकराव) को बेदखल करना बेहतर है। –
एनजी-क्लिक इसे जोड़ता नहीं है, लेकिन कार्यों को बाध्य करता है। – Chrillewoodz
ठीक है अगर आप नियंत्रक को वाक्यविन्यास के रूप में उपयोग करते हैं (यह कोणीय 2 में माइग्रेट करने के लिए तैयार करने का अनुशंसित तरीका है)। यह। Scope.vm.like के रूप में दायरे में पंजीकृत है, और आपके दृष्टिकोण की तरह दिखता है। –