我试过了
$routeProvider
.when('/paintings',
{
controller: 'imageController' , 'getPaintingImages'
templateUrl: 'paintings.html'
})
.when('/foods',
{
controller: 'imageController' , 'getFoodImages'
templateUrl: 'food.html'
})
我想要getPaintingImages和getFoodImages从工厂获取绘画/食物的列表,并希望使用imageController来处理图像。但是只有第一个控制器被调用。
之前我写过代码,仅在imageController中获取图像,
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];
};
});
因为我是angularJS的初学者,所以我不确定创建多个控制器是否是重用imageController的解决方案?如果是,如何执行此操作,否则,如何重新使用imageController为不同的图像集工作。对于功能,通常通过参数传递来重复使用功能。但是在这里,我想知道控制器如何在内部调用视图时采用参数?
getPaintingImages和getFoodImages正在使用工厂来获取您说的图像。听起来您可以在routeProvider中使用诸如resolve:之类的东西,以便在调用imageController时可以找到它们所需的图像。
像这样的东西(假设您的getPaintings和getFoods是服务/工厂,并且获取图像是返回一个$ promise并分解为图像(即$ http请求)的东西):
$routeProvider
.when('/paintings', {
controller: 'imageController',
templateUrl: 'paintings.html',
resolve: {
images: function($q, getPainting) {
getPainting.images();
}
}
})
.when('/foods', {
controller: 'imageController',
templateUrl: 'food.html',
resolve: {
images: function($q, getFoods) {
getFoods.images();
}
}
})
然后,您可以访问像这样的图像:
myWebsite.controller('imageController', ['$scope', 'images', function ($scope, images){
...
}]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句