从一个控制器设置为服务以用于另一个控制器的值 returns 使用 angular js 刷新页面时没有值(angular 的新功能)

Value set from one controller into service to be used on another controller returns no value on page refresh using angular js(new to angular)

我有一个HTML代码

<div id="{{item.codeName}}">
    <a class="search-results" href="" ui-sref="app.location" ng-click="vm.setValue(item._id)">{{item.codeName}} </a><br><br>
</div>

在控制器 ng-click 上,我通过将 id 传递给 controller1 来调用函数 vm.setValue,我将 id 值传递给要设置的服务。

在控制器 1 中

 vm.setValue = function(Id){
            service.setId(Id);
    }

我的服务

angular.module('myApp', [])
.service('setProperties', function () {
    var _Id = null;
        function getId(){
    return _Id; 
}
function setId(Id){
    _Id = Id;
  }
});

我已成功将 _Id 设置为服务并立即将 Id 值输入到我的另一个控制器中...

在控制器 2 中

 vm.loadDealDetails = function () {      
setProperties.loadSearchDealDetails(setProperties.getId()).then(function(data) {
            if (data !== null) {  
                vm.dealDetailData.push(data);
                setProperties.setId(vm.dealDetailData._id);
            }
        });
    }

在 controller2 中,我在页面加载时调用函数 vm.loadDealDetails,我通过从服务的 getId 函数传递 id 值,从另一个服务函数 loadSearchDealDetails 获取数据。 ..再次从数据响应中我得到了 Id 值并将其设置为服务......但这在一个过程中只工作一次

因为我调用了 load/refresh 页面函数 vm.loadDealDetails 函数,但是我没有从这个 setProperties.getId() 获得任何值,因为它在没有响应的情况下变空了....我将如何制作 getId 还在 load/refresh 页上工作 请帮忙

您没有获得该值,因为当您重新加载您的应用时,您的应用会再次加载,因此 js 文件也会重新加载。所以,它和新应用一样好。

现在,您可以执行以下操作来保留数据:

  1. localStorage赋值。 Check this link 并使用 angularJS 方式实施。
  2. 使用服务器 session 即使在应用重新加载后也能保留数据。