在我的Angular应用中,我正在使用一个API来提供不同大小的图片,具体取决于我附加到图片请求的参数(例如?size=small
或?size=medium
)。
为了让我的视图更容易直接请求他们需要的图像大小,我想写一堆方法,可以从我的应用程序的任何视图调用,并返回相应的图像URL。
我希望能够按如下方式调用方法:
getSmallImage(myImageURL)
,
getMediumImage(anotherImageURL)
等
我已开始为此编写工厂,详情如下:
myApp.factory('imageService', function (imageURL){
return {
getSmallImage: function(imageURL) {
// do stuff with imageURL
}
getMediumImage: function(imageURL) {
// do stuff with imageURL
}
}
});
这样可行,但如果我对工厂的理解是正确的,我仍然必须在控制器中包含我想要调用的特定方法,并将它们包装在一个单独的控制器方法中(例如详见本post))
我没有受过教育的猜测是,在这种特殊情况下,肯定有一种更简单的方法可以使这些方法直接在视图中使用,而无需在每个控制器中重复这些方法?或者这是推荐的解决方法,如果是这样,为什么?
答案 0 :(得分:2)
您可以将其放在$rootScope:
app.run(function($rootScope, imageService){
$rootScope.getSmallImage = imageService.getSmallImage;
$rootScope.getMediumImage = imageService.getMediumImage;
})