使用 angular ionic 中的状态传递参数
passing parameters using state in angular ionic
我正在使用 ionic 构建应用程序。
现在我想使用状态通过 url 传递一个变量,但它不起作用。最好的方法是什么?
我的做法:
$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
})
我有一个基本控制器"dashboard",我想使用
发送订单
$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)
});
'OrderCtrl'
属于parent状态
.state('orders', {
controller: 'OrderCtrl'
...
而参数 orderid
是在 child 状态下定义的:
.state('orders.view-order', {
url: "/view-order?orderid", // here is param defined
这意味着 parent 无法访问这些参数 - 因为它们是为其 child
定义的
所以,我们可以
1) 将参数移动到 parent (我会说是这样)
.state('parent', {
url: "/parent/:parentId",
templateUrl: 'tpl.html',
controller: 'ParentCtrl',
})
.state('parent.child', {
url: "/child/:childId",
template: 'this is a child view',
controller: 'ChildCtrl',
})
或者 2) 使用这个技巧,当我们将 $stateParams 放入 $rootScope 并且可以在任何地方观察到它的最新值时:
.run(['$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}])
这些示例状态 a working plunker
.state('parent', {
url: "/parent",
templateUrl: 'tpl.html',
})
.state('parent.child', {
url: "/child/:childId",
template: 'this is a child view',
controller: 'ChildCtrl',
})
我正在使用 ionic 构建应用程序。
现在我想使用状态通过 url 传递一个变量,但它不起作用。最好的方法是什么?
我的做法:
$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
})
我有一个基本控制器"dashboard",我想使用
发送订单$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)
});
'OrderCtrl'
属于parent状态
.state('orders', {
controller: 'OrderCtrl'
...
而参数 orderid
是在 child 状态下定义的:
.state('orders.view-order', {
url: "/view-order?orderid", // here is param defined
这意味着 parent 无法访问这些参数 - 因为它们是为其 child
定义的所以,我们可以 1) 将参数移动到 parent (我会说是这样)
.state('parent', {
url: "/parent/:parentId",
templateUrl: 'tpl.html',
controller: 'ParentCtrl',
})
.state('parent.child', {
url: "/child/:childId",
template: 'this is a child view',
controller: 'ChildCtrl',
})
或者 2) 使用这个技巧,当我们将 $stateParams 放入 $rootScope 并且可以在任何地方观察到它的最新值时:
.run(['$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}])
这些示例状态 a working plunker
.state('parent', {
url: "/parent",
templateUrl: 'tpl.html',
})
.state('parent.child', {
url: "/child/:childId",
template: 'this is a child view',
controller: 'ChildCtrl',
})