基本的例子
此示例顯示使用 controllerAs
語法設定具有 3 條路徑的小型應用程式,每條路徑都有自己的檢視和控制器。
我們在角度 .config
功能配置我們的路由器
- 我們將
$routeProvider
注入.config
- 我們使用路由定義物件在
.when
方法中定義路由名稱。 - 我們為
.when
方法提供了一個指定我們的template
或templateUrl
,controller
和controllerAs
的物件
app.js
angular.module('myApp', ['ngRoute'])
.controller('controllerOne', function() {
this.message = 'Hello world from Controller One!';
})
.controller('controllerTwo', function() {
this.message = 'Hello world from Controller Two!';
})
.controller('controllerThree', function() {
this.message = 'Hello world from Controller Three!';
})
.config(function($routeProvider) {
$routeProvider
.when('/one', {
templateUrl: 'view-one.html',
controller: 'controllerOne',
controllerAs: 'ctrlOne'
})
.when('/two', {
templateUrl: 'view-two.html',
controller: 'controllerTwo',
controllerAs: 'ctrlTwo'
})
.when('/three', {
templateUrl: 'view-three.html',
controller: 'controllerThree',
controllerAs: 'ctrlThree'
})
// redirect to here if no other routes match
.otherwise({
redirectTo: '/one'
});
});
然後在我們的 HTML 中,我們使用 <a>
使用 <a>
元素定義我們的導航,路由名稱 helloRoute
我們將路由為 <a href="#/helloRoute">My route</a>
我們還提供了一個容器和指令 ng-view
來注入我們的路線。
index.html
<div ng-app="myApp">
<nav>
<!-- links to switch routes -->
<a href="#/one">View One</a>
<a href="#/two">View Two</a>
<a href="#/three">View Three</a>
</nav>
<!-- views will be injected here -->
<div ng-view></div>
<!-- templates can live in normal html files -->
<script type="text/ng-template" id="view-one.html">
<h1>{{ctrlOne.message}}</h1>
</script>
<script type="text/ng-template" id="view-two.html">
<h1>{{ctrlTwo.message}}</h1>
</script>
<script type="text/ng-template" id="view-three.html">
<h1>{{ctrlThree.message}}</h1>
</script>
</div>