我需要传递并接收两个参数到我想转移到使用ui-srefui-router的状态.
比如使用以下链接将状态转换为homewith foo和bar参数:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Run Code Online (Sandbox Code Playgroud)
控制器中的接收foo和bar值:
app.controller('SomeController', function($scope, $stateParam) {
//..
var foo = $stateParam.foo; //getting fooVal
var bar = $stateParam.bar; //getting barVal
//..
});
Run Code Online (Sandbox Code Playgroud)
我在控制器中得到undefined了$stateParam.
有人可以帮我理解如何完成它吗?
编辑:
.state('home', {
url: '/',
views: {
'': {
templateUrl: 'home.html',
controller: 'MainRootCtrl'
},
'A@home': {
templateUrl: 'a.html',
controller: 'MainCtrl'
},
'B@home': {
templateUrl: 'b.html',
controller: …Run Code Online (Sandbox Code Playgroud) 如何在不使用查询字符串且仅使用一个路由名称的情况下允许可选参数到路由中?我目前正在指定每个路线五次以允许任何部件组合:
所有部件必须是可选的.路线必须解决任何变化.
.state("login", { url: "/login", templateUrl: "login.html", params: { a: null, b: null, c: null, d: null } })
.state("loginA", { url: "/login/:a", templateUrl: "login.html", params: { b: null, c: null, d: null } })
.state("loginAB", { url: "/login/:a/:b", templateUrl: "login.html", params: { c: null, d: null } })
.state("loginABC", { url: "/login/:a/:b/:c", templateUrl: "login.html", params: { d: null } })
.state("loginABCD", { url: "/login/:a/:b/:c/:d", templateUrl: "login.html" })
Run Code Online (Sandbox Code Playgroud)
必须有一个更容易/更清洁/更少丑陋的方式.
使用AngularJS + ui-router,我需要将一个url与单词列表匹配:
但是,使用正则表达式我尝试使用一个或两个单词,它工作
url: '/{source:(?:John|Paul)}/:id'
Run Code Online (Sandbox Code Playgroud)
但我需要将我的网址与单词列表相匹配.
例如:var sourceList = ['John','Paul','George','Ringo']; url:'/ {source :(?:sourceList)} /:id'
有没有办法比较我的网址与匹配的数组列表?
我正在使用angularjs和UI-Router.我想配置指定所选语言的路由.虽然这部分路线应该是可选的.
我有以下状态:
{
state: 'app',
config: {
abstract: true,
url: '/{lang:(?:de|en)}',
template: '<ui-view/>'
}
}
{
state: 'app.mainview',
config: {
url: '/mainview',
templateUrl: 'app/mainview/mainview.html',
controller: 'MainviewController',
controllerAs: 'vm',
title: 'Main View',
settings: {
pos: 1,
displayName: 'Mainview',
icon: 'code-array'
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在它唯一可以导航到主视图
example.com/en/mainview
Run Code Online (Sandbox Code Playgroud)
虽然我想配置ui-router以使以下所有路由都有效:
example.com/mainview
example.com/en/mainview
example.com/de/mainview
Run Code Online (Sandbox Code Playgroud)
我可以在开头设置一个带有可选语言参数的路由而不使用双斜杠吗?如果不是,您建议使用哪些替代方案?
有没有办法在ui-router的url开头有一个可选属性?如果是这样,怎么样?
我想要达到这样的目的:
.state('events',{
url: '(/city:)?/events/:id'
...
})
Run Code Online (Sandbox Code Playgroud)
所以"城市"是可选的.
感谢您的任何输入.
我正在构建一个带有角度UI路由器的静态HTML网站,用于导航.我基本上有一个带有多个(10+)html模板(页面)的ui-view加载到该视图中.我的所有模板页面都在一个名为"pages"的目录中.
所以我基本上想知道我们是否只能在$ stateProvider中定义一个状态来动态分配多个模板网址,而不是为每个HTML模板页面编写不同的状态(如下所述).
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'pages/home.html',
controller: 'homeController',
controllerAs: 'home'
})
.state('viz', {
url: '/viz',
templateUrl: 'pages/viz.html',
controller: 'vizController',
controllerAs: 'viz'
})
.state('about', {
url: '/about',
templateUrl: 'pages/about.html',
controller: 'aboutController',
controllerAs: 'about'
})....
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
由于angular angularjs路由有可选的参数值吗?
和AngularJS:使用带有可选参数的URL进行路由带有?参数名称的
问号应该使其成为可选项.它没有帮助我.
var app = angular.module('app', ['ui.router','ngRoute']);
app.config(function ($urlRouterProvider, $stateProvider) {
$urlRouterProvider.otherwise('/a');
$stateProvider.state('a', {
url: '/a',
templateUrl: 'views/a.html'
}).state('b', {
url: '/b/:code?/:d?',
templateUrl : 'views/b.html'
})
});
Run Code Online (Sandbox Code Playgroud)
这个网址http:// localhost:xx/kk /#/ b/1/2对我来说很好.但是http:// localhost:xx/kk /#/ b(没有任何参数)和http:// localhost:xx/kk /#/ b/1对我不起作用......
你可以看到我正在使用$stateProviderui-router.我不想切换到$urlRouteProvider