Comment définir des contrôleurs multiples pour une vue en angularJS?
Ce que j'ai essayé :
$routeProvider
.when('/paintings',
{
controller: 'imageController' , 'getPaintingImages'
templateUrl: 'paintings.html'
})
.when('/foods',
{
controller: 'imageController' , 'getFoodImages'
templateUrl: 'food.html'
})
Je voulais getPaintingImages et getFoodImages pour obtenir la liste des peintures/aliments à partir d'une usine, et imageController de manipuler les images. Mais seulement le premier contrôleur est appelé.
Plus tôt, j'ai écrit le code pour obtenir les images en imageController seulement,
myWebsite.controller('imageController', function imageController($scope, getPaintings){
$scope.images = getPaintings.images(); //but need to make this work for different set of images
$scope.imageCount = countObjectElements($scope.images);
$scope.selectedImage = $scope.images[0];
$scope.selectedImageIndex = 0;
$scope.updateSelectedImage = function(img) {
$scope.selectedImage = img;
$scope.selectedImageIndex = $scope.images.indexOf(img);
};
$scope.updateSelectedImageIndex = function(val) {
alert($scope.imageOf);
if($scope.selectedImageIndex <= 0)
$scope.selectedImageIndex = $scope.imageCount;
$scope.selectedImageIndex = ($scope.selectedImageIndex + val) % $scope.imageCount;
$scope.selectedImage = $scope.images[$scope.selectedImageIndex];
};
});
Comme je suis un débutant en angularJS, je ne suis pas sûr si la création de plusieurs contrôleurs une solution pour ré-utiliser imageController ? Si oui comment le faire, si non comment ré-utiliser imageController de travail pour les différentes images. Dans le cas des fonctions, de la ré-utilisation de la fonction se fait généralement par passage de paramètres. Mais ici, je me demande comment un contrôleur de prendre des paramètres comme elle est appelée pour un affichage à l'interne ?
OriginalL'auteur Anubha | 2013-10-31
Vous devez vous connecter pour publier un commentaire.
getPaintingImages et getFoodImages utilisez une usine pour obtenir les images que vous dites. Il semble que vous pourriez utiliser quelque chose comme résoudre: dans l'routeProvider de sorte que les images de la imageController besoins sont là pour eux lorsqu'il est appelé.
Quelque chose comme (en supposant que votre getPaintings et getFoods sont les services/usine et obtenir les images sont quelque chose qui renvoie à un $promesse de résoudre en images c'est à dire $requête http):
Ensuite, vous pouvez simplement accéder à des images comme:
OriginalL'auteur Florence Foo
Comment faire imageController le parent:
OriginalL'auteur AlwaysALearner
Lorsque vous définissez un contrôleur à la vue du contrôleur de demande isolé de la portée de la vue, vous ne pouvez pas avoir 2 isolé étendues sur le même point de vue, qui serait à l'origine de l'erreur. Les seules options que vous avez à faire est d'appliquer le contrôleur de la mère, ou appeler le
imageController
fonction à l'intérieur du premier contrôleur et passer le$scope
OriginalL'auteur iConnor