通过依赖项注入在控制器之间传递$routeParams

Passing $routeParams between controllers via dependency injection

本文关键字:之间 routeParams 控制器 依赖 注入      更新时间:2023-09-26

我想知道如何将此控制器范围内的变量传递给另一个控制器。我想做的是获取vm.search(searchParameters)并将其传递给另一个控制器。

///

(函数(){"严格使用";

var controllerId = 'GroupMaintenanceBrowsePlansCtrl';
angular.module('myApp').controller(controllerId, ['$scope', 'RenewalGroupDataService', 'logger', Controller]);
function Controller($scope, datacontext, logger) {
    logger = logger.forSource(controllerId);
    var logError = logger.logError;
    var logSuccess = logger.logSuccess;
    var logWarning = logger.logWarning;
    var vm = {};
    $scope.vm = vm;
    vm.getPlans = getPlans;
    vm.plans;
    vm.loadingPlans = false;

    vm.pageSize = 100;
    function getPlans(searchParameters) {
        vm.loadingPlans = true; vm.search = searchParameters;
        datacontext.getAssignedPlans(searchParameters, vm.pageSize).then(function (plans) {
            vm.plans = plans;
      //Compares which columns are being populated for choosing which headings to show
        if (vm.search.MchNumber != null 
            ||vm.search.ContractNumber != null 
            || vm.search.PlanCode != null)
        {
            vm.detail = true;
        }
        if (vm.search.DivisionName != null
            || vm.search.PoolName != null
            || vm.search.SubpoolName != null
            || vm.search.RenewalGroupName != null)
        {
            vm.detail = false;
        }
            //Sets values to NULL after every search is performed
       vm.search.MchNumber =
       vm.search.ContractNumber =
       vm.search.PlanCode =
       vm.search.DivisionName =
       vm.search.PoolName =
       vm.search.SubpoolName =
       vm.search.RenewalGroupName = null;
        }).finally(function () { vm.loadingPlans = false; });
    }
};

})();

要在两个控制器之间使用一个值,可以使用两个控制器都注入的服务。

例如

root.service("MyService", function () {});

MyService注入每个控制器。然后,两个控制器将使用相同的实例(因为服务是单实例),所以您在该服务上更改的任何内容都将被共享。

您也可以将服务放在$scope上,并使用模板绑定。但在您的情况下,我认为这与此无关。