使用角度离子状态传递参数

时间:2015-09-09 16:36:04

标签: javascript angularjs state angular-ui-router

我正在使用离子构建应用。

现在我想通过状态传递一个变量,但它不起作用。最好的方法是什么?

我的方法:

$stateProvider
    .state('orders', {
        url: "/orders",
        abstract: true,
        templateUrl: "views/side-menu.html",
        cache: false,
        controller: 'OrderCtrl'
    })

    .state('orders.view-order', {
        url: "/view-order?orderid", //<---- THIS ONE
        views: {
            'menuContent': {
                templateUrl: "views/view-order.html"
            }
        },
        cache: false
    })

    .state('orders.open-orders', { 
        url: "/open-orders",
        views: {
            'menuContent': {
                templateUrl: "views/open-orders.html"
            }
        },
        cache: false
    })

我有一个基本控制器&#34;仪表板&#34;从我想要发送到订单的地方

$state.go("orders.view-order", {'orderid': '232323232'});

然后是订单控制器......(只显示一个空对象:(

angular.module(appName).controller('OrderCtrl', 
 function($location, $rootScope, $scope, $ionicPopup,
   $state, $stateParams, $auth, $ionicLoading, 
   $timeout, $interval, newOrderService, jwtHelper){

    console.log($stateParams)
});

1 个答案:

答案 0 :(得分:3)

UIImagePickerController 属于状态

'OrderCtrl'

虽然参数 .state('orders', { controller: 'OrderCtrl' ... 是在子状态上定义的:

orderid

这意味着,父母无法访问这些参数 - 因为它们是为其子项

定义的

所以,我们也可以 1)将参数移动到父 (我会说这是方式)

a working plunker

.state('orders.view-order', {
        url: "/view-order?orderid", // here is param defined

或2)当我们将$ stateParams放入$ rootScope并且可以在任何地方观察它的最新值时使用这个技巧:

  .state('parent', {
      url: "/parent/:parentId",
      templateUrl: 'tpl.html',
      controller: 'ParentCtrl',
  })
  .state('parent.child', { 
      url: "/child/:childId",
      template: 'this is a child view',
      controller: 'ChildCtrl',
  })

a working plunker有这些示例状态

.run(['$rootScope', '$state', '$stateParams',
  function ($rootScope, $state, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
}])