में "गणना की गई गुण" मैंने हाल ही में एक परियोजना के लिए एम्बर.जेएस पर एंगुलरजेएस चुना है, और मैं अब तक बहुत खुश हूं। एम्बर के बारे में एक अच्छी बात यह है कि स्वचालित डेटा बाइंडिंग के साथ "गणना गुण" के लिए इसका समर्थन किया गया है। मैं नीचे कोड के साथ कोणीय में कुछ समान करने में सक्षम हूं, लेकिन मुझे यकीन नहीं है कि ऐसा करने का सबसे अच्छा तरीका है या नहीं।AngularJS
// Controller
angular.module('mathSkills.controller', [])
.controller('nav', ['navigation', '$scope', function (navigation, $scope) {
// "Computed Property"
$scope.$watch(navigation.getCurrentPageNumber, function(newVal, oldVal, scope) {
scope.currentPageNumber = newVal;
});
$scope.totalPages = navigation.getTotalPages();
}]);
// 'navigation' service
angular.module('mathSkills.services', [])
.factory('navigation', function() {
var currentPage = 0,
pages = [];
return {
getCurrentPageNumber: function() {
return currentPage + 1;
},
getTotalPages: function() {
return pages.length;
}
};
});
// HTML template
<div id=problemPager ng-controller=nav>
Problem {{currentPageNumber}} of {{totalPages}}
</div>
मैं जब भी navigation
सेवा में परिवर्तन की currentPage
उपरोक्त कोड सिद्ध अद्यतन करने के लिए यूआई के लिए करना चाहते हैं।
क्या यह AngularJS में इस समस्या को हल करने का सबसे अच्छा तरीका है? $watch()
का उपयोग करने के लिए क्या (महत्वपूर्ण) प्रदर्शन प्रभाव हैं? क्या ऐसा कुछ कस्टम इवेंट्स और $emit()
या $broadcast()
का उपयोग करके बेहतर किया जाएगा?
बेहतर वास्तव में है कि लेकिन, आप क्यों चिपके रहते है सब कुछ एक साथ हो सकता है कि आप अपने मॉड्यूल को अलग करने की कोशिश करनी चाहिए और? आपके नियंत्रक घोषणाएं? – Nimaen
खैर, मॉड्यूल नियंत्रक के लिए मॉड्यूल है; शीर्ष स्तर नियंत्रक को रखने के बजाय। – ithkuil