angularjs在页面之间传输数据

时间:2015-12-19 06:59:45

标签: angularjs ionic

我的英语非常糟糕,起初控制器,我在服务器上发布数据,并且我获得了传输数据的$ rootScope.YD。但是当我在第二页使用YD时,它确实无法正常工作你帮我吗?

.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'
})

2 个答案:

答案 0 :(得分:0)

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

或者您可以使用$ broadcast。这将发布一个事件,其中包含您提供的名称和您解析的数据。你在第一个控制器上执行此操作在第二个控制器上使用$ rootScope.on监听事件。

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

答案 1 :(得分:0)

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

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