Angularapp1 (6 de 9): home.js
Éste es el código completo:
>>>>>>
‘use strict’;
myApp
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/home', {
templateUrl: 'home/home.html',
controller: 'HomeController'
});
}])
.controller(‘HomeController’, ['$scope', '$http', function($scope, $http) {
console.log("[HomeController]“);
console.log(“[HomeController]$scope.model: “);
console.log($scope.model);
//meto las categorias en el modelo solo si no estaba ya. De esta manera si navego por la app no se hacen llamasas ajax innecesarias
if ($scope.model.categories == null || $scope.model.categories.length == 0) {
$http({
method: ‘GET’,
url: ‘fake-ajax/get-categories.html’
}).then(function successCallback(response) {
console.log(“[HomeController] successCallback”);
var category;
for(var i in response.data){
category = new Category();
category.parseFromObject(response.data[i]);
if(category != null){
$scope.model.categories.push(category);
}
category = null;
}
}, function errorCallback(response) {
console.log(“[HomeController] errorCallback”);
});
}
}]);
>>>>>>
Con las líneas
myApp
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/home', {
templateUrl: 'home/home.html',
controller: 'HomeController'
});
}])
Se le está diciendo que cuando en la url estés en /home tiene que coger el contenido de home/home.html y el controlador de esta sección es el HomeController.
El HomeController se ejecuta cada vez que el usuario vaya a /home, tanto navegando por la app como con el botón de back del navegador.
Lo que hago en ese controller es traerme la lista de categorías y añadirlas al model. Y sólo lo hago una única vez, para no hacer llamadas ajax innecesarias. Las categorías no cambian, no hay necesidad de volver a consultar al servidor si ya me las he traído anteriormente.