我有几个控制器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, ... );
}
评论?原因是什么?
答案 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>
否则,如果你想要的东西运作正常,那么你可以采用你的方法。