Page 362 - AngularJS权威教程
P. 362
342 第 25 章 AngularJS 精华扩展
},
'priority': {
template: '<h4>Priority inbox</h4>',
resolve: {
facebook: function() {
return FB.messages();
}
}
}
}
});
8. abstract
抽象模板永远不能直接激活,但是可以设置被激活的子节点。
你可以使用抽象模板提供一个模板包装器来包裹多个命名视图,或者传递$scope对象给子节
点。你还可以使用它们来传递解析后的依赖或者自定义数据,或者在同一url下嵌套多个路由(比
如,所有的路由都在/adminURL之下)。
设置抽象模板与设置常规状态一样,区别只在于设置abstract属性:
$stateProvider
.state('admin', {
abstract: true,
url: '/admin',
template: ;<div ui-view></div>'
})
.state('admin.index', {
url: '/index',
template: '<h3>Admin index</h3>'
})
.state('admin.users', {
url: '/users',
template: '<ul>...</ul>'
});
9. onEnter、onExit
Angular会在用户(分别)进入或者离开视图时调用这些回调函数。对于这两个选项,你可
以设置希望调用的函数。这些函数可以访问被解析的数据。
这些回调函数让你可以在新视图上或者进入另一个状态时触发某个行为。使用它们可以很好
地实现一个“你确定吗?”形式的模态视图,或者在用户进入这个状态之前要求用户登录。
10. data
你可以附加任意数据给你的状态配置对象configObject。这个选项跟resolve属性很像,但
是它的数据不会被注入到控制器中,promise也不会被解析。
当需要从父状态给子状态传递数据时,这个选项特别有用。
25.3.2 事件
和ngRoute服务一样,angular-route服务会在状态生命周期的不同阶段触发不同的事件。