大佬教程收集整理的这篇文章主要介绍了4、Angular-Ui Router URL路由(完结篇),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Here's how you set a basic url.
下面是如何设置基本url的方法。
Now when the user accessesindex.html/contacts
then the 'contacts' state would become active and the mainui-view
will be populated with the 'contacts.html' partial. Alternatively,if the user were to transition to the 'contacts' state viatransitionTo('contacts')
then the url would be updated toindex.html/contacts
当用户访问 index.html/contacts时。然后,“contacts”状态将变为活动,ui-view将被“contacts.html”填充。或者,如果用户通过transitionTo("contacts")切换到“contacts”状态,那么url将被更新为index.html/contacts
Often,URLs have dynamic parts to them which are called parameters. There are several options for specifying parameters. A basic parameter looks like this:
通常,UR有动态的部分,它们被称为参数。有几个选项可以指定参数。一个基本的参数是这样的:
Alternatively you can also use curly brackets:
或者你也可以使用花括号:
Examples:
示例:
'/Hello/'
- Matches only if the path is exactly '/Hello/'. There is no special treatment for Trailing slashes,and patterns have to match the entire path,not just a prefix.'/user/:id'
- Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or '/user/bob/details'. The second path segment will be captured as the parameter 'id'.'/user/{iD}'
- Same as the prevIoUs example,but using curly brace Syntax.'/user/{id:int}'
- The param is interpreted as Integer.Note:
注意
To create a link that passes parameters,use the state name like a function and pass it an object with parameter names as keys. The properhref
will be generated.
要创建传递参数的链接,可以使用状态名作为函数,并传递带有参数名的对象作为键。将生成适当的href。
For example,using the above state which specified acontactId
parameter,create a link like so:
例如,使用指定了 contactId 参数的上述状态,创建如下链接:
<a ui-sref="contacts.detail({ContactId: iD})">View Contact</a>
The value forid
can be anything in scope.
id的值可以是任意值。
A bonus to using curly brackets is the ability to set a Regular Expression rule for the parameter:
使用花括号的一个好处是可以为参数设置正则表达式规则:
Examples:示例:
'/user/{iD}'
from the prevIoUs example.'/user/{id:[0-9a-fA-F]{1,8}}'
- SIMILAR TO the prevIoUs example,but only matches if the id parameter consists of 1 to 8 hex digits.'/files/{path:.*}'
- Matches any URL starTing with '/files/' and captures the rest of the path into the parameter 'path'.'/files/*path'
- Ditto. Special Syntax for catch all.Warning:
警告
You can also specify parameters as query parameters,following a '?':
还可以将参数指定为查询参数,即'?':
If you need to have more than one,separate them with an '&':
如果你需要不止一个查询参数,则把它们用"&"分开。
You still can specify what parameters to receive even though the parameters don't appear in the url. You need to add a new field params in the state and create links as specified in Using Parameters in Links
即使参数没有出现在url中,您仍然可以指定要接收的参数。您需要在状态中添加一个新的字段params,并在指定的链接中使用参数。
Box-sizing: border-Box; margin-top: 0px; margin-bottom: 16px; color: rgb(36,you have the state.
例如,你的状态。
<a ui-sref="contacts({param1: value1})">View Contacts</a>
Or you can pass them to $state.go() too.
你也可以在$state.go()方法中使用参数
$state.go('contacts',{param1: value1})
When using url routIng together with nested states the default behavior is for child states to append their url to the urls of each of its parent states.
当使用url路由与嵌套状态一起使用时,默认的行为是让子状态将url附加到每个父状态的url。
So the routes would become:
所以路由会变成:
"/contacts"
"/contacts/list"
. The urls were combined.If you want to have absolute url matching,then you need to prefix your url String with a special symbol '^'.
如果你想要有绝对的url匹配,那么你需要在你的url字符串前面加上一个特殊的符号 '^'
"/list"
. The urls werenotcombined because^
was used.As you saw prevIoUsly the $stateParams service is an object that will have one key per url parameter. The $stateParams is a perfect way to provide your controllers or other services with the individual parts of the navigated url.
正如您之前看到的,$stateParams服务是一个对象,每个url参数都有一个键。$stateParams是为您的控制器或其他服务提供导航url的各个部分的完美方式。
Note:$stateParams service must be specified as a state controller,and it will be scoped so only the relevant parameters defined inthatstate are available on the service object.
注意:$stateParams服务必须指定为状态控制器为作用域,因此只有在该状态中定义的相关参数在服务对象中可用。
// If you had a url on your state of:
url: '/users/:id/details/{typE}/{repeat:[0-9]+}?from&to'
// Then you navigated your browser to:
'/users/123/details//0'
// Your $stateParams object would be
{ id:'123',type:'',repeat:'0' }
// Then you navigated your browser to:
'/users/123/details/default/0?from=there&to=here'
// Your $stateParams object would be
{ id:'123',type:'default',repeat:'0',from:'there',to:'here' }
$stateParams
GotchaIn state controllers,the$stateParams
object will only contain the params that were registered with that state. So you will not see params registered on other states,including ancestors.
在状态控制器中,$stateParams对象只包含在该状态注册的参数。所以你不会看到参数在其他状态中注册,包括祖先状态。
Instead,use a resolve statement in the parent route.
相反,在父路由中使用解析(resolvE)语句。
$urlRouterProvider has the responsibility of watching $LOCATIOn. When $LOCATIOn changes it runs through a list of rules one by one until a match is found. $urlRouterProvider is used behind the scenes anytime you specify aurl
in a state configuration. All urls are compiled into a UrlMatcher object (see $urlMatcherFactory below).
$urlRouterProvider有责任观察$LOCATIOn。当$LOCATIOn改变时,它会遍历规则列表直到找到匹配为止。当您在状态配置中指定url时,$urlRouterProvider在后台所所有的url都被编译成一个UrlMatcher对象(请参阅下面的$urlMatcherFactory)。
There are several methods on $urlRouterProvider that make it useful to use directly in your module config.
$urlRouterProvider上有几个方法,可以使它在模块配置中直接使用。
when()
for redirectionParameters:
参数:
handler
作为字符串类型时
If handler is a String,it is treated as a redirect,and is interpolated according to the Syntax of match (i.e. like String.replace() for RegExp,or like a UrlMatcher pattern otherwisE).
如果handler是字符串,则将其视为重定向,并根据match的语法进行插值(例如,用于RegExp的String.replace(),或者类似于UrlMatcher模式)。
handler作为函数时
If the handler is a function,it is injectable. It gets invoked if $LOCATIOn matches. You have the option of inject the match object as $match
如果handler是一个函数,它是可注入的。如果$LOCATIOn匹配,就会调用它。您可以选择将匹配对象注入$match
handler可以返回::
Here's the actual code that we use to register state's that have urls behind the scenes.
下面是我们用来注册状态的代码,在后台有url。
Parameters:
参数
rule
that returns the url path. The function version is passed two params:$injector
and$LOCATIOn
.handlerFunctionA function that takes in the $injector and $LOCATIOn services as arguments. You are responsible for returning a valid path as a String.
handler Function 一个函数,它接受$injector和$LOCATIOn服务作为参数。函数需要返回一条有效字符串路由。
Defines the Syntax for url patterns and parameter placeholders. This factory service is used behind the scenes by $urlRouterProvider to cache compiled UrlMatcher objects,instead of having to re-parse url patterns on every LOCATIOn change. Most users will not need to use $urlMatcherFactory directly,however it Could be useful to craft a UrlMatcher object and pass it as the url to the state config.
定义url模式和参数占位符的语法。该工厂服务在后台使用$urlRouterProvider来缓存已编译的UrlMatcher对象,当url更改时而不必重新解析位置。大多数用户不需要直接使用$urlMatcherFactory,但是它可以很好地创建一个UrlMatcher对象并将其作为url传递给状态配置。
Please refer to the comment documentation within the$urlMatcherFactory fileto learn more.
请参阅$urlMatcherFactory文件中的注释文档以了解更多信息。
探讨请加微信:
以上是大佬教程为你收集整理的4、Angular-Ui Router URL路由(完结篇)全部内容,希望文章能够帮你解决4、Angular-Ui Router URL路由(完结篇)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。