首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过服务更改$scope变量

如何通过服务更改$scope变量
EN

Stack Overflow用户
提问于 2016-09-23 01:18:46
回答 1查看 21关注 0票数 0

我有一个小应用程序创建和编辑费用与三个状态(使用ui-路由器):索引,新的,编辑。New和Edit相同几乎相同的功能,所以我希望将代码外包到服务中,而不是让代码两次。问题是当我试图在newCtrl或editCtrl中更改绑定到$scope的变量时。例如,两者都具有以下功能:

代码语言:javascript
复制
$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;
}

如何避免这种代码重复,并将其移动到服务中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-23 01:22:37

管理费用的简单服务。我更喜欢删除而不是设置而不是空值。我也不喜欢在服务中公开我的对象,所以我通常会添加一个geter来访问数据。如果你真的想这样做,你可以公开FeeService.myFeeFeeService.getFee()

代码语言:javascript
复制
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();

   }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39645165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档