AngularJS跨页面传值(ui-router)-阿里云开发者社区

开发者社区> 大数据> 正文

AngularJS跨页面传值(ui-router)

简介: 博主用的ionic 这里使用ui-router传值,用来在跳转页面的同时带着你想带走的东西一起跳走

(PS:博主半路出家,尚是菜鸟,写的东西自己跑起来并没有什么问题但不敢保证写的一定对,语言也很随意,仅供参考。另,期待各位前辈的指教)


博主用的ionic

这里使用ui-router传值,用来在跳转页面的同时带着你想带走的东西一起跳走

需求是这样的,我有一个商品单子(概览页),点一个商品就可以去看它的详情(详情页)
要解决的问题就是把概览页被点击的商品的id传给详情页,详情页拿着这个id给后台,后台返回对应的需要的json

下面开始实现
.controller('CafeCtrl', function($scope, cafeData, $state) {	//往外传值的controller里加一个$state
  $scope.cafeList = cafeData.All();
  $scope.goDetail = function(id) {
    $state.go('itemDetail',{sort : "cafe", id : id});		//就拿它传
  };
})
在传值的一行:
$state.go('itemDetail',{sort : "cafe", id : id});//前面的是变量名,后边的是值
我的理解是:塞了两个变量到一个中转的名叫$stateParams的什么东西里面,controller里面写法就是这样子的
页面上ng-click="goDetail(item.id)"调用它就可以了

app.js里,接收值的页面(详情页).state这么写,留两个位置给刚才传出来的东西
.state('itemDetail', {
  url: '/itemDetail/:sort/:id/',	//这里就是那两个要传的东西,名字要对应相同
  templateUrl: 'templates/itemDetail.html',
  controller: 'ItemDetailCtrl'
})

然后再去接收值的页面(详情页)接收这俩值存俩对象里面(接受并存下了传来的两个值)
.controller('ItemDetailCtrl', function($scope, $stateParams, $state) {		//加个$stateParams
  $scope.sort = $stateParams.sort;
  $scope.itemId = $stateParams.id;
})
在上面加个$stateParams,然后下面scope一个对象,把你要的值从$stateParams里面拿点儿出来赋值给它就ok了

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
大数据
使用钉钉扫一扫加入圈子
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

其他文章