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。
我的英语很差,一开始是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。