Answers:
两者的功能与SPA(单页应用程序)中用于路由目的的功能相同。
控制器和视图的URL(HTML局部)。它监视$ location.url()并尝试将路径映射到现有的路由定义。
的HTML
<div ng-view></div>
上面的标签将根据$routeProvider.when()
您在.config
(配置阶段)中提到的条件渲染模板
局限性
ng-view
页面$routeProvider
失败。(实现这一目标,我们需要使用指令一样ng-include
,ng-switch
,ng-if
,ng-show
,这看起来不错,让他们在SPA)AngularUI Router是AngularJS的路由框架,它允许您将接口的各个部分组织到状态机中。UI-Router是围绕状态组织的,状态可以有选择地附加路由以及其他行为。
多个视图和命名视图
另一个重要功能是能够在模板中具有多个ui视图。
虽然多个并行视图是一个强大的功能,但是您通常可以通过嵌套view
s并将这些视图与嵌套状态配对来更有效地管理接口。
的HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
的大部分ui-router
功能是它可以管理嵌套状态和视图。
优点
ui-view
在一个页面上有多个ui-view="some"
仅通过使用@
带有状态名称的绝对路由来更改状态。@
使用change ui-view="some"
。这将代替ui-view
而不是检查是否嵌套。ui-sref
创建href
URL URL
,也可以使用json
格式指定状态参数。为了更好地处理带有状态的各种嵌套视图,我希望您能使用 ui-router
$stateProvider
–$routeProvider
Angular自己的ng-Router URLs
在路由时要考虑在内,UI-Router states
除了URL外。
状态绑定到命名视图,嵌套视图和并行视图,从而使您可以有效地管理应用程序的界面。
在ng-router中,通过<a href="">
标记提供链接时,必须非常注意URL ,在UI-Router中,您必须state
谨记。您提供的链接如<a ui-sref="">
。请注意,即使您<a href="">
在UI-Router中使用,就像在ng-router中一样,它仍然可以工作。
因此,即使您决定某天更改URL,您的URL state
仍将保持不变,并且只需要在处更改URL .config
。
虽然可以使用ngRouter制作简单的应用程序,但UI-Router可以使复杂应用程序的开发变得更加容易。这里是它的维基。
$ route:用于将URL深度链接到控制器和视图(HTML局部),并监视$ location.url()以便从现有路由定义映射路径。
当我们使用ngRoute时,使用$ routeProvider配置路由,而当使用ui-router时,使用$ stateProvider和$ urlRouterProvider配置路由。
<div ng-view></div>
$routeProvider
.when('/contact/', {
templateUrl: 'app/views/core/contact/contact.html',
controller: 'ContactCtrl'
});
<div ui-view>
<div ui-view='abc'></div>
<div ui-view='abc'></div>
</div>
$stateProvider
.state("contact", {
url: "/contact/",
templateUrl: '/app/Aisel/Contact/views/contact.html',
controller: 'ContactCtrl'
});