我有一个使用ui-router来管理我的应用程序的状态和URL路由的AngularJS应用程序。
这是一个示例状态:
.state('my_state', {
url: '/my_state/:arg1',
templateUrl: 'http://www.example.com/html/my_file.html',
controller: 'MyCtrl'
})
这是控制器:
app.controller('MyCtrl', function($stateParams) {
console.log('arg1 = ', $stateParams.arg1)
);
这是我从另一个控制器中派人去的方式:
$state.go('my_state', {'arg1': 'hello'});
$state.go
执行上面的行后,我将发送到该URL,/my_state/hello
并且看到以下内容打印到浏览器的调试窗口中:
arg1 = hello
现在这是我的问题:是否可以向该控制器添加另一个参数,例如:
arg2
。MyCtrl
。如果是这样,请告诉我如何。
默认情况下,UI路由器中的路由参数是可选的。例如,您的代码(如下)说这arg1
是一个可选参数。因此,两者/my_state/:arg1
和/my_state/
都可以使用,但不能/my_state
(没有斜杠)。它还显示arg1
URL中的值。
.state('my_state', {
url: '/my_state/:arg1',
templateUrl: 'http://www.example.com/html/my_file.html',
controller: 'MyCtrl'
})
您可以根据自己的喜好向此控制器添加另一个可选参数:
.state('my_state', {
url: '/my_state/:arg1',
templateUrl: 'http://www.example.com/html/my_file.html',
controller: 'MyCtrl',
params: {
arg2: { value: null }
}
})
要隐藏参数,您必须在中定义它们params
。
需要注意的是该squash
属性(内部params
)配置默认的参数值是如何在这个URL时,当前的参数值是一样的默认值。如果未设置squash,它将使用配置的默认squash策略。
更新资料
使用内部控制器的另一个工作柱塞$state.go('my_state', {'arg1': 'hello', 'arg2': 'world'});
。
请注意, 之间不存在功能上的差异ui-sref
,并$state.go
为激活状态
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句