我在哪里需要在Angular中放置公共方法?

时间:2014-05-30 06:20:47

标签: angularjs

我有run方法,我实现了两个公共方法:pxHphW返回屏幕宽度和高度(以像素为单位)。

app.run(function(){

   var calcPixels = function(size, valueInPersent){
        return ( size * valueInPersent / 100 ) + 'px';
    };

    $rootScope.pxH = function(valueInPersent){            
        return calcPixels(window.innerHeight, valueInPersent);
    };

    $rootScope.pxW = function(valueInPersent){
        return calcPixels( window.innerWidth, valueInPersent );
    };

});

在我的所有项目中使用HTML:

<div class="row" ng-style="{'height': pxH(21.7)}"></div>

我有大约20个HTML文件,我在所有这些文件中使用这些方法。

我是否需要将方法pxHphW保留在$rootScope下,或者有更合适的方法来放置它们?

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

创建工厂:

app.factory('calc', function() {
    return {
       calcPixels: function (size, valueInPersent){
          return ( size * valueInPersent / 100 ) + 'px';
       },

       pxH: function (valueInPersent){            
           return calcPixels(window.innerHeight, valueInPersent);
       },

       pxW: function(valueInPersent){
           return calcPixels( window.innerWidth, valueInPersent );
       }
   }
});

然后在您的控制器中注入服务:

app.controller('myController', function($scope, calc) {
      $scope.calcPixels = calc.calcPixels;
      etc...
});