router 路由的简单介绍(2)

options:object,可选配置对象。有 location(是否更新地址栏的url,或以什么字符串替换url),inherit(是否继承当前url的参数),relative(当变化相对路径:如"^,定义的状态是相对的),notify(是否广播$stateChangeStart和$stateChangeSuccess事件),reload(是否重新载入)。

代码:

$state.go('contact.detail');

href(stateOeName,params,options);

一个URL生成方法,返回为给定的状态填充指定的参数编译后的链接。

参数:

stateOeName:string,你想要生成的url的状态或者状态对象。

params:object,一个用于填充状态需要的参数的对象。

options:可选配置对象。有lossy(当第一个参数url未被提供时是否继承导航的url进行构建href),inherit(是否继承当前url的参数),relative(当变化相对路径:如"^,定义的状态是相对的),absolute(是否生成绝对url)。

代码:

$state.href("about.person", { person: "bob" })

include(stateOrName,params,options);

一个确定当前有效的状态是不是与stateOrName平级的还是其子状态。

参数:

stateOeName:string,部分名称,相对名称,或者通过当前状态进行全局模式查找。

params:object,一个参数对象。

options:可选配置对象。有relative。

代码:

<div ng-class="{highlighted:$state.includes('.item')}">Item</div>

$state.$current.name = 'contacts.details.item'; $state.includes("contacts"); // true $state.includes("contacts.details"); // true $state.includes("contacts.details.item"); // true $state.includes("contacts.list"); // false $state.includes("about"); // false

全局模式: 

$state.$current.name = 'contacts.details.item.url'; $state.includes("*.details.*.*"); // true $state.includes("*.details.**"); // true $state.includes("**.item.**"); // true $state.includes("*.details.item.url"); // true $state.includes("*.details.*.url"); // true $state.includes("*.details.*"); // false $state.includes("item.**"); // false

is(stateOrName,params,options);

与$state.include相似,只是这个针对的是全名。参数性质同上。

代码: 

<div ng-class="{highlighted: $state.is('.item')}">Item</div>

$state.$current.name = 'contacts.details.item'; $state.is('contact.details.item'); // true $state.is(contactDetailItemStateObject); // true

reload(state);

重新载入当前状态的方法。

参数:

state:一个状态名称或者状态对象。

代码:

$state.reload('contact.detail');

transitionTo(to,toParams,options);

过渡到一个新状态的方法。

参数:

to:状态名称。

toParams:将会发送到下一个状态的参数。

options:可选参数。有location,inherit,relative,notify,reload。

代码:

$state.transitionTo($state.current, $stateParams, { reload: true, inherit: false, notify: true });

事件:
1  、$stateChangeError

路由状态变化发生错误时触发的事件。参数有:event,toState,toParams,fromState,fromParams,error。以上根据字面意思即可理解,哈哈。

2、$stateChangeStart

路由状态变化发生前触发的事件。参数有:event,toState,toParams,fromState,fromParams。

3、$stateChangeSuccess

路由状态变化正确时触发的事件。参数有:event,toState,toParams,fromState,fromParams。

4、$stateNotFound

路由状态没找到的时候触发的事件。参数有:event,unfoundState,fromState,fromParams。

$stateProvider

处理路由状态的服务,路由的状态反映了该项在应用程序中的位置,描述了在当前状态下UI是应该怎么样的,并且该做什么。

依赖:$urlRouterProvider $urlMatcherFactoryProvider

方法:

decorator(name,func);

通过内部的$stateProvider以扩展或者重写状态生成器。可用于添加ui-router的自定义功能,例如,基于状态名称推断templateUrl。

警告:因为生成器的函数执行顺序的不确定,decorator不应该相互依赖。

参数:

name:需要修改的生成函数名称。

func:负责修改生成器函数的函数。

代码: 

$stateProvider.decorator('views', function (state, parent) { var result = {}, views = parent(state); angular.forEach(views, function (config, name) { var autoName = (state.name + '.' + name).replace('.', 'https://www.jb51.net/'); config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html'; result[name] = config; }); return result; }); $stateProvider.state('home', { views: { 'contact.list': { controller: 'ListController' }, 'contact.item': { controller: 'ItemController' } } }); $state.go('home');

以上代码修饰了“views”直接通过state的名称绑定完对应的页面模板。

state(name,stateConfig);

注册一个状态,并给定其配置。

参数:

name:状态的名称。

stateConfig:状态配置对象。配置具有以下各项属性:

template: string/function,html模板字符串,或者一个返回html模板字符串的函数。

templateUrl:string/function,模板路径的字符串,或者返回模板路径字符串的函数。

templateProvider:function,返回html模板字符串或模板路径的服务。

controller:string/function,新注册一个控制器函数或者一个已注册的控制器的名称字符串。

controllerProvider:function,返回控制器或者控制器名称的服务

controllerAs:string,控制器别名。

parent:string/object,手动指定该状态的父级。

resolve:object,将会被注入controller去执行的函数,<string,function>形式。

url:string,当前状态的对应url。

views:object,视图展示的配置。<string,object>形式。

abstract:boolean,一个永远不会被激活的抽象的状态,但可以给其子级提供特性的继承。默认是true。

onEnter:function,当进入一个状态后的回调函数。

onExit:function,当退出一个状态后的回调函数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypgxz.html