angularjs – 如何传递参数使用ui-sref在ui路由器到控制器
我需要传递和接收两个参数的状态,我想转让使用ui-sref的ui路由器。
类似下面的链接使用foo和bar参数将状态转换到home: <a ui-sref="home({foo: 'fooVal',bar: 'barVal'})">Go to home state with foo and bar parameters </a> 在控制器中接收foo和bar值: app.controller('SomeController',function($scope,$stateParam) { //.. var foo = $stateParam.foo; //getting fooVal var bar = $stateParam.bar; //getting barVal //.. }); 我得到未定义的$ stateParam在控制器。 有人可以帮助我明白如何完成吗? 编辑: .state('home',{ url: '/',views: { '': { templateUrl: 'home.html',controller: 'MainRootCtrl' },'A@home': { templateUrl: 'a.html',controller: 'MainCtrl' },'B@home': { templateUrl: 'b.html',controller: 'SomeController' } } });
我创建了一个
example来展示如何。更新的状态定义为:
$stateProvider .state('home',{ url: '/:foo?bar',views: { '': { templateUrl: 'tpl.home.html',controller: 'MainRootCtrl' },... } 这将是控制器: .controller('MainRootCtrl',$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。 链接到doc: > URL Parameters 你可以检查它here 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的文档中描述 下面是一个提取 > value – {object | function =}:指定此参数的默认值。这隐式将此参数设置为可选… 我们可以这样调用这些参数: // 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]})"> 检查它在行动here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |