直接从视图访问共享方法

时间:2014-01-30 12:30:36

标签: javascript angularjs angularjs-service

在我的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))

我没有受过教育的猜测是,在这种特殊情况下,肯定有一种更简单的方法可以使这些方法直接在视图中使用,而无需在每个控制器中重复这些方法?或者这是推荐的解决方法,如果是这样,为什么?

1 个答案:

答案 0 :(得分:2)

您可以将其放在$rootScope:

app.run(function($rootScope, imageService){
  $rootScope.getSmallImage = imageService.getSmallImage;
  $rootScope.getMediumImage = imageService.getMediumImage;
})