将服务绑定到$ scope是个好主意吗?

时间:2014-11-07 15:45:09

标签: angularjs

我有几个控制器page1Ctrl,page2Ctrl等,还有一个服务PriceCalculator。

该服务有几个功能,如totalPrice(productId,customerType)等。 当我在所有控制器中使用相同的服务时,我正在考虑使用以下代码:

app.controller('page1Ctrl', function($scope, PriceCalculator) {

    $scope.PriceCalculator = PriceCalculator;
    $scope.products = ....
...
}

在我的页面中,我会:

<ul>
 <li ng-repeat="product in products">
 ...
<div>Total price: {{ PriceCalculator.totalPrice(product.id, customerType) }}</div>

我的问题是:将服务绑定到范围并从那里使用它是一种好习惯吗? 我们经常看到的是:

$scope.totalPrice = function(productId){
    return PriceCalculator.totalPrice(productId, ... );
}

评论?原因是什么?

1 个答案:

答案 0 :(得分:0)

我相信如果您正在寻求密切关注最佳实践,那么您应该遵循这一点“控制器应该负责更新您的视图”。并且服务不应该暴露在视图中。这样的事情。

   app.controller('page1Ctrl', function($scope, PriceCalculator) {

     $scope.priceCalculator = function (param1, param2){
        return  PriceCalculator.totalPrice (param1, param2); 

     }


  <div>Total price: {{ priceCalculator(product.id, customerType) }}</div> 

否则,如果你想要的东西运作正常,那么你可以采用你的方法。