Hello World 的例子

第 1 步:安装

在使用 Angular-UI 路由器之前,必须在项目中包含 AngularJS。有关详细指南,请参阅此文档

你可以分别从 GitHub-Page 或 NuGet,NPM,Bower 下载 Angular-UI 路由器。

在你的网页中包含 JS 文件后,你可以在应用程序中注入 ui.router 模块。在你的脚本文件中,你应该具有以下内容:

var app = angular.module('app', []);

现在我们将把 Angular-UI 路由器注入到我们自己的应用程序中,如下所示:

var app = angular.module('app', ['ui.router']);

现在 Angular-UI 路由器将加载我们的应用程序。以下步骤将解释 Angular-UI 路由器背后的基础知识,并将展示一些基本功能。

第 2 步:定义简单状态

你可以在 Angular config 函数中配置 UI-Router。使用 $stateProvider 定义你的状态。在以下示例中,每个状态都有一个 URL,控制器和一个模板。

(function() {
  var app = angular.module('app', ['ui.router']);
  
  app.config(['$stateProvider', function($stateProvider) {
      $stateProvider
        .state('home', {
          url: "/home",
          templateUrl: "home.html",
          controller: "homeCtrl"
        })
        .state('kitchen', {
          url: "/kitchen",
          templateUrl: "kitchen.html",
          controller: "kitchenCtrl"
        })
        .state('den', {
          url: "/denCtrl",
          templateUrl: "den.html",
          controller: "denCtrl"
        })
        .state('itemDetail', {
          url: "/items/:itemName",
          templateUrl: "item.html",
          controller: "itemDetailCtrl"
        })

    }])
})();

在 HTML 中,你将需要 ui-view 指令,以便可以在其中填充状态视图。

<div ui-view></div>

第 3 步:访问状态

共有 3 种方法可以访问 $stateProvider 中定义的状态。

1.通过 ui-sref 指令

你可以使用 ui-sref 指令访问 HTML 中的状态

<li ui-sref-active="active">
    <a ui-sref="kitchen">Go to the Kitchen</a>
</li>
<li ui-sref-active="active">
    <a ui-sref="den">Enter the den</a>
</li>
<li ui-sref-active="active">
    <a ui-sref="itemDetail({itemName:'keyboard'})">Key Board</a>
</li>

2.通过控制器中的 $state 服务

你还可以使用 .go 方法使用提供给控制器的 $state 导航到控制器内的其他状态。

.controller(function($scope, $state) {
    // ...
    $scope.navigateTo = function(stateName) {
        $state.go(stateName); // i.e. $state.go('den'); 
    };
})

3.通过浏览器中的 URL

假设你有一个名为 kitchen 的状态定义如下:

$stateProvider
  .state("kitchen", {
    url: "/kitchenUrl",
    ...
  });

然后访问 appdomain / kitchenUrl 作为浏览器中的 URL 将进入你的 kitchen 状态,假设没有嵌套状态,appdomain 是托管你的应用程序的服务器。

如果你仍然感到困惑,这里是一个完全工作的 Plnkr