通过$ state.go传递数据以及如何访问它

时间:2015-03-31 22:30:48

标签: angularjs angular-ui-router

现在我需要使用$ state.go来切换视图,但我需要传递一些数据。 (我更愿意传递一个对象)我在网上搜索了一些帮助,但没有看到一个符合我问题的好答案。这是我的代码:

state('editreport', {
        url: '/editreport/:reports',
        templateUrl: 'submitter/editreport/editexpensesreport.html'
    })

在我的Ctr1中:

$scope.goeditpage = function(report){

                            $state.go('editreport',{'reports':report});
                        }

当用户点击goeditpage时。将它们带到'editreport'页面。在editreport页面中,我有另一个名为'ctr2'的控制器,我尝试访问这样的数据:

controller('Ctr2',
        [ '$scope','$stateParams', function($scope,$stateParams) {
            $scope.lin = $stateParams.reports;
            console.log($scope.lin);
        } ])

但没有成功,任何想法?另一个问题是如何使数据可选?因为用户可能会输入数据,但始终会将他们带到此页面。

1 个答案:

答案 0 :(得分:0)

执行此操作的方法是通过查询字符串传递该数据,这是$state.go('state-name', {name:'fizz', tag: 'stackoverflow'})

关于你的州,它需要像这样:

$stateProvider.state('editreport', { url: '/editreport/:reports?name=&tag', templateUrl: 'submitter/editreport/editexpensesreport.html' })

在您的控制器上

您将需要检索该信息,您可以使用$location,如下所示:

var myParams = $location.search(); //$location.search() returns an object that will look like this myParams = {name: 'fizz', tag: 'stackoverflow'} 复制参数后,您可以从网址中删除它们: $location.search({});