$ http的可重用代码以角度调用

时间:2015-04-13 20:27:26

标签: angularjs

在我的所有控制器中,我注意到在发布数据后,我一遍又一遍地使用相同的代码。见下文。有一些我可以把我的服务传递给某种常见功能并处理那里的所有事情。

//user submits via click
$scope.submit = function(val) {
            MyService.update(val).then(function(result) {
                if (result.Success) {
                    $state.reload();
                }
                else {
                    $state.go('^');
                }
            })
    }

也许把它变成只是

$scope.submit = commonFn(MyService.update(val));

关于避免这种冗余代码的最佳方法的任何建议都会很棒!

2 个答案:

答案 0 :(得分:1)

您可以将代码放入服务中,然后只需传递$state

<强>为MyService

updateAndReload = function(val, $state){
    update(val).then(function(result) {
       if (result.Success) {
         $state.reload();
       }
       else {
         $state.go('^');
       }
}

<强>控制器

$scope.submit = MyService.updateAndReload(val, $state)

但这只有在每次真正完全相同的代码时才有效。如果存在更多差异,您可能只需要添加更多参数。

答案 1 :(得分:0)

var commonFn = function(result) {
  if (result.Success) {
    $state.reload();
  }
  else {
    $state.go('^');
  }
}
MyService.update(val).then(commonFn);