angularjs 在页面之间传输数据

angularjs Transfer data between pages

我的英语很差,一开始是Controller,我post从服务器获取数据,我得到了一个$rootScope.YD用于传输数据。但是当我在第二页使用YD时,它不 work.can 你帮我吗?

.controller('yd_homeCtrl',function($rootScope, $scope, $state, $http,$ionicActionSheet, $ionicModal)
{
    $scope.getReadList = function ()
    {
        var url = $rootScope.rootUrl + "/read.php";
        var data = {
            "func":"getReadList",
            "unionid":$rootScope.userinfo.unionid,
            "fr":1
        };
        encode(data);

        $rootScope.LoadingShow;

        $http.post(url, data).success(function (response)
        {
            $rootScope.LoadingHide();
            $rootScope.YD=response.data.result[0];
            $state.go('yd_improve')
        }).error(function (response, status)
        {
            $rootScope.LoadingHide();
            $rootScope.Alert('连接失败![' + response + status + ']');
            return;
        });
    }
})

.controller("yd_improveCtrl",function($rootScope, $scope, $state, $http, $ionicActionSheet, $ionicModal, $stateParams, $interval, $sce, $ionicHistory,$ionicSlideBoxDelegate)
    {
    $scope.text="";
    angular.forEach($rootScope.YD,function(value,key){
        if(key==0)
        {
        //alert(1111111);
        //alert(value.text);
            $scope.text=value.text;
            alert($scope.text);
        }

    });

   });

有app.js状态:

 .state('yd_improve', {
    cache: false,
    url: '/yd_improve/:id',
    onExit: function ()
    {
        var v = document.getElementById("audio");
        v.pause();
        v.src = "";
    },
    templateUrl: 'templates/yd_improve.html',
    controller: 'yd_improveCtrl'
})

你有几个选择。创建一个存储信息的服务。在第一个控制器中设置数据。在第二个控制器中获取数据。

或者您可以使用 $broadcast。这将发布一个事件,该事件具有您为其指定的名称和您解析的数据。您在第一个控制器上执行此操作。在第二个控制器上使用 $rootScope.on.

监听事件

但我建议使用服务,它是内存和性能方面的最佳解决方案。

使用 $broadcast 服务。它是在控制器之间广播事件和传递参数的最可靠解决方案。

不要依赖于将数据存储在服务中,因为在页面刷新时,服务也会刷新,您将丢失存储在服务变量中的数据。因此,非常不建议在服务中保持状态。请改用 $broadcast。