angular页面参数传值问题

发布于 2022-09-04 08:25:38 字数 2221 浏览 13 评论 0

我想通过ui-router的$state.go传递参数,可不知道为何在目标页面上收不到值。
路由配置:

.state('channelconfig',{
    url:'/channel/channelconfig',
    views:{
        'content':{
            templateUrl:'tpls/channel/channelconfig.html',
            controller:'channelconfigCtrl',
            controllerAs:'channelconfig'
        },
        'leftmenu':{
            templateUrl:'layouts/menu.html'
        }
    },
    params : {//跳转设置参数
        channelInfo:null
    }
})

点击跳转的页面

<tr ng-repeat="x in channels">
    <td class="am-text-middle"><input type="checkbox" name=""></td>
    <td class="am-text-middle">{{x.channel_name}}</td>
    <td class="am-text-middle">{{x.channel_type}}</td>
    <td class="am-text-middle">{{x.brand_name}}</td>
    <td class="am-text-middle">{{x.self_help}}</td>
    <td class="am-text-middle">{{x.data_spider}}</td>
    <td class="am-text-middle">{{x.create_at}}</td>
    <td class="am-text-middle">{{x.update_at}}</td>
    <td class="am-text-middle">{{x.admin_name}}</td>
    <td class="am-text-middle">
        <button class="am-btn am-btn-default am-btn-xs am-radius am-icon-pencil-square-o" type="button" ng-click="jump(x);">修改</button>
        <button class="am-btn am-btn-default am-btn-xs am-radius am-icon-remove am-icon-close" type="button">删除</button>
    </td>
</tr>

跳转的函数:

    $scope.jump = function (data) {
        console.log(data);
        $state.go('channelconfig', {channelInfo: data});
    };

接受数据的页面:

egDataApp.
controller('channelconfigCtrl', ['$scope','$http','$state','$stateParams',function ($scope,$http,$state, $stateParams) {
    $scope.list = {};
    $scope.list_part = {};
    $scope.formdata = {};
    var channelInfo = $stateParams.channelInfo;
    console.log(channelInfo);

报错信息:传的时候打印的data有值,但是跳过去之后接收不到数据

clipboard.png

不知道哪里可能会有问题,求大神帮忙看看

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

绝影如岚 2022-09-11 08:25:38

ng1的路由应该是不能传对象的。你可以试试这个,原理是这样,但不确定能不能传这么多字段。

.state('channelconfig',{
    url:'/channel/:brand_id/:brand_name/:channel_name/:type/:self_help',
    views:{
        'content':{
            templateUrl:'tpls/channel/channelconfig.html',
            controller:'channelconfigCtrl',
            controllerAs:'channelconfig'
        },
        'leftmenu':{
            templateUrl:'layouts/menu.html'
        }
    }
})

$state.go('channelconfig', {
    brand_id: value,
    brand_name:value,
    channel_name: value,
    type:value
    self_help:value
});

===========================
一般都是传一个id,然后在下一个页面通过id去查找数据。

海的爱人是光 2022-09-11 08:25:38

戳我之前自己也遇到过

烟雨扶苏 2022-09-11 08:25:38

没发现什么问题,'leftmenu':{

        templateUrl:'layouts/menu.html'
    }这个不要加控制器吗?
﹏半生如梦愿梦如真 2022-09-11 08:25:38

$stateParams服务获取的参数是路由中url后面所带的参数

1.使用localStorage或sessionStorage来传递DATA。

2.使用factory。

.factory('myFactory', function () {
    //定义factory返回对象
    var myServices = {};    
    //定义参数对象
    var myObject = {};
    
    var _set = function (data) {
       myObject = data;     
    };
    var _get = function () {
        return myObject;
    };

    myServices.set = _set;
    myServices.get = _get;
    
    // 在controller中通过调set()和get()方法可实现提交或获取参数的功能
    return myServices;
  
});
記柔刀 2022-09-11 08:25:38

channelInfo:null --改为--> channelInfo:'' 看看

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文