使用$ scope分解控制器代码的最佳方法

时间:2016-11-27 11:08:19

标签: angularjs ionic-framework refactoring

我的AngularJS 1(+ Ionic)应用程序正在处理各种类型的数据(Employee,Company,...),每种类型和视图都有一个控制器。

目前控制器之间存在大量相同的代码,例如下面用于删除具有模式对话框的实体以进行确认的部分。

我想把它分解为一个函数或服务或者其他什么,我会从每个控制器调用,但不知道该怎么做,因为这段代码使用的是$ scope,$ ionicModal和$ ionicHistory。 / p>

你能告诉我怎么办吗?非常感谢!

$ionicModal.fromTemplateUrl("templates/delete-modal.html", {
    scope: $scope
}).then(function(modal) {
    $scope.modal = modal;
    $scope.text = "Delete entity?";
});

$scope.delete = function() {
    $scope.modal.show();
}
$scope.doDelete = function() {
    $scope.modal.hide();
    databaseService.remove($scope.entity);
    $ionicHistory.goBack(-2);
}
$scope.doCancel = function() {
    $scope.modal.hide();
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以将$scope传递给服务方法。应该注入$ionicModal$ionicHistory

因此,请创建一个注入$ionicModal$ionicHistory的服务。定义了服务上的方法,以$scope为参数。

在每个控制器中,将$scope传递给服务方法的相应功能。