我的英语非常糟糕,起初控制器,我在服务器上发布数据,并且我获得了传输数据的$ 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'
})
答案 0 :(得分:0)
你有几个选择。创建存储信息的服务。在第一个控制器中设置数据。并在第二个控制器获取数据。
或者您可以使用$ broadcast。这将发布一个事件,其中包含您提供的名称和您解析的数据。你在第一个控制器上执行此操作在第二个控制器上使用$ rootScope.on监听事件。
但我建议在内存和性能方面使用服务最佳解决方案。
答案 1 :(得分:0)
使用$ broadcast服务。它是广播事件和在控制器之间传递参数的最可靠的解决方案。
不要依赖于将数据存储在服务中,因为在页面刷新时,服务也会刷新,您将丢失存储在服务变量中的数据。因此,维持服务状态是非常不受推荐的。请改用$ broadcast。