Recentemente ho scelto AngularJS su ember.js per un progetto su cui sto lavorando e ne sono stato molto contento fino ad ora. Una cosa carina di ember è il supporto per "proprietà calcolate" con l'associazione automatica dei dati. Sono stato in grado di realizzare qualcosa di simile in Angular con il codice sottostante, ma non sono sicuro che sia il modo migliore per farlo."Proprietà calcolate" in 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>
desidero per l'interfaccia utente per aggiornare ogniqualvolta il currentPage
delle navigation
cambiamenti di servizio, che il codice precedente compie.
È questo il modo migliore per risolvere questo problema in AngularJS? Ci sono (significative) implicazioni sulle prestazioni per l'utilizzo di $watch()
in questo modo? Sarebbe meglio realizzare qualcosa del genere usando eventi personalizzati e $emit()
o $broadcast()
?
Questo è meglio anzi Tuttavia, perché ti infili tutto insieme Forse si dovrebbe cercare di separare il modulo e? le dichiarazioni del controllore? – Nimaen
Bene, il modulo è il modulo per il controller, invece di mantenere un controller di primo livello – ithkuil