我可以设置一个带有可选参数的路径(相同的模板和控制器,但如果它们不存在,应该忽略一些参数吗?
所以不是写下面两条规则,而是只有一条规则?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Run Code Online (Sandbox Code Playgroud)
像这样的东西([这个参数是可选的])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
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)
必须有一个更容易/更清洁/更少丑陋的方式.
在我的应用程序中,我使用角度UI路由器.
我有当地人(英语和希伯来语)我的基本语言是英语.
这就是为什么我想要的语言是英语不要将参数添加到网址
例如:
http://example.com/Home希伯来语 - > http://example.com/he/
关于我们English - > http://example.com/about
http://example.com/he/about这可能吗 ?
这是我目前的代码
$stateProvider
.state('/', {
url: "/",
templateUrl: "Assets/app/templates/home.html",
controller: 'homeController'
})
.state('activity', {
url: "/activity",
templateUrl: "Assets/app/templates/gallery.html",
controller: 'galleryController'
})
.state('page', {
url: '/:pagename',
templateUrl: "Assets/app/templates/page.html",
controller: 'pageController'
});
Run Code Online (Sandbox Code Playgroud) 有没有办法在ui-router的url开头有一个可选属性?如果是这样,怎么样?
我想要达到这样的目的:
.state('events',{
url: '(/city:)?/events/:id'
...
})
Run Code Online (Sandbox Code Playgroud)
所以"城市"是可选的.
感谢您的任何输入.
我的app.js中有一个包含路由的URL.让我们说网址是:
/api/:opt1/:opt2/:opt3/users
Run Code Online (Sandbox Code Playgroud)
我希望我的网址在任何情况下都能正常工作,我应该忽略可选参数(opt1,opt2或opt3,可能全部或几个).我怎样才能做到这一点.
有什么方法可以调用$location.path('/users'),我还可以指定可选参数的值是什么?
我在AngularJS应用程序中有几条路线,我正在使用UI-Router在我的站点中的状态/页面之间进行路由.我遇到的一个问题是我有相互冲突的路由,因为我对网站主页有/可选参数.
我有一个主页(example.com)的路由或多或少定义如下:
$stateProvider
.state('home', {
url: '/:filter',
params: {
filter: { squash: true, value: null }
}
});
Run Code Online (Sandbox Code Playgroud)
我可以通过转到主页(example.com),以及添加example.com/apples用于过滤主页上内容的可选参数来激活此状态.
我现在的问题是,我有一个定义的其他途径/login,/about,/help并通过进入example.com/login或example.com/help,只会激活home因为状态/:filter我已经定义了可选的占位符参数,它捕获后的任何途径/.
我尝试过的解决方法是在我的其他路由定义和链接中添加一个尾部斜杠url: /login/并激活:example.com/login/这有效但我无法使用UI路由器的ui-sref指令通过名称而不是我的应用程序中的URL来引用我的状态尾随斜线看起来很丑陋.
我试图做到的,是要能够对网页的可选参数/:filter,仍然能够去我的其他途径/login,/register等等.而不必通过添加结尾的斜杠要解决它.
之前有没有人处于这种或类似的情况?任何见解或建议都非常感谢.提前致谢.