我创建了一个示例来说明如何 *** 作。更新的
state定义将是:
$stateProvider .state('home', { url: '/:foo?bar', views: { '': { templateUrl: 'tpl.home.html', controller: 'MainRootCtrl' }, ... }
这将是控制器:
.controller('MainRootCtrl', function($scope, $state, $stateParams) { //.. var foo = $stateParams.foo; //getting fooVal var bar = $stateParams.bar; //getting barVal //.. $scope.state = $state.current $scope.params = $stateParams; })
我们可以看到,状态状态现在的url定义为:
url: '/:foo?bar',
这意味着url中的参数应为
/fooVal?bar=barValue
这两个链接将正确地将参数传递给控制器:
<a ui-sref="home({foo: 'fooVal1', bar: 'barVal1'})"><a ui-sref="home({foo: 'fooVal2', bar: 'barVal2'})">
另外,控制器确实消耗
$stateParams而不是
$stateParam。
链接到文档:
- URL参数
你可以在这里检查
params : {}
还有 新的 ,更精细的设置 params : {}
。正如我们已经看到的,我们可以将参数声明为的一部分 url
。但是通过
params : {}配置-我们可以扩展此定义,甚至引入不属于url的参数:
.state('other', { url: '/other/:foo?bar', params: { // here we define default value for foo // we also set squash to false, to force injecting // even the default value into url foo: { value: 'defaultValue', squash: false, }, // this parameter is now array // we can pass more items, and expect them as [] bar : {array : true, }, // this param is not part of url // it could be passed with $state.go or ui-sref hiddenParam: 'YES', }, ...
$ stateProvider的文档中描述了可用于参数的设置
以下只是摘录
- 值-{object | function =} :指定此参数的默认值。这隐式将此参数设置为可选…
- array-{boolean =} :( 默认值:false)如果为true,则参数值将被视为值数组。
- squash-{bool | string =}: squash配置当当前参数值与默认值相同时,如何在URL中表示默认参数值。
我们可以这样称呼这些参数:
// hidden param cannot be passed via url<a href="#/other/fooVal?bar=1&bar=2">// default foo is skipped<a ui-sref="other({bar: [4,5]})">
在这里检查它的作用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)