我有一个小应用程序创建和编辑费用与三个状态(使用ui-路由器):索引,新的,编辑。New和Edit相同几乎相同的功能,所以我希望将代码外包到服务中,而不是让代码两次。问题是当我试图在newCtrl或editCtrl中更改绑定到$scope的变量时。例如,两者都具有以下功能:
$scope.removeFeeRule = function(){
$scope.feeParameter = null;
$scope.feeRule.multiplier = null;
$scope.feeRule.addend = null;
$scope.feeRule.fee_suite_id = null;
$scope.feeRule.fee_parameter_id = null;
}如何避免这种代码重复,并将其移动到服务中?
发布于 2016-09-23 01:22:37
管理费用的简单服务。我更喜欢删除而不是设置而不是空值。我也不喜欢在服务中公开我的对象,所以我通常会添加一个geter来访问数据。如果你真的想这样做,你可以公开FeeService.myFee和FeeService.getFee()
angular.module('yourmodule')
.service('FeeService', FeeService)
.controller('MyController', MyController);
function FeeService(){
this.reset = reset;
this.getFee = getFee;
var _currentFee = {};
function getFee(){
return _currentFee;
}
function reset(){
delete _currentFee.feeParameter = null;
delete _currentFee.multiplier = null;
delete _currentFee.addend = null;
delete _currentFee.fee_suite_id = null;
delete _currentFee.fee_parameter_id = null;
return _currentFee;
}
}
function MyController($scope, FeeService){
$scope.removeFeeRule = removeFeeRule;
init();
function init(){
$scope.myFee = FeeService.getFee();
}
function removeFeeRule(){
FeeService.reset();
}
}https://stackoverflow.com/questions/39645165
复制相似问题