Angular2路由模块简介
由于该模块已经停止针对 AngularJS 1.4.7 及以下版本的维护,请不要再在项目中使用。**由于该模块已经停止针对 AngularJS 1.4.7 及以下版本的维护,请不要再在项目中使用。Angular2虽然还没有正式发布,但全新设计的路由模块已经提前面世,它从AngularJS 1.4开始支持。相对于老的 先放代码和DEMO。 基础代码先来构建基础的HTML和JS代码,index.html代码如下: <!DOCTYPE html>
<html>
<head>
<title>Angular New Router Test</title>
</head>
<body ng-app="webApp" ng-controller="AppController as app">
<div class="container">
<ng-viewport></ng-viewport>
</div>
<script src="../lib/angular2/angular.js"></script>
<script src="../lib/angular-new-router/dist/router.es5.js"></script>
<script src="./app.js"></script>
</body>
</html>
然后是AngularJS基础代码,app.js: 'use strict';
angular.module('webApp',['ngNewRouter'])
.controller('AppController',['$router',AppController]);
AppController.$routeConfig = [
];
function AppController ($router) {
}
构件componentAngularJS 1.3之前,在配置一个路由页面时,一般会包括一个HTML模板,一个控制器和一套路由配置。路由配置中,要指定相应的HTML模板和控制器名称。在新的路由策略中,这些被构件(
比如,像下面这样: home/
├── home.html
└── home.js
单从上面这几部分来讲,可能看不出来构件的优势,但在路由配置的时候,你根本不用指定HTML文件,也不用指定控制器名字,只需要直接使用构件名——也就是目录名就行了。像这样: {path: '/',component: 'home'}
配置的代码简化了许多,而你所需要做的,就是遵循约定,使用约定来取代配置。先来看看 angular.module('webApp.home',[])
.controller('HomeController',["$router",HomeController]);
function HomeController($router) {
this.AppName = 'Angular New Router示例';
}
终于不再 <div class="page-header"> <h3>{{home.AppName}}</h3> </div>
构件的js文件,需要使用 angular.module('webApp',['ngNewRouter','webApp.home','webApp.articles']
)
.controller('AppController',AppController]);
在上面的 <body ng-app="webApp" ng-controller="AppController as app">
</body>
如果要使用AppController中的变量,则需要像下面这样: <span>{{app.AppName}}</span>
路由的配置
AppController.$routeConfig = [
{path: '/',component: 'home'}
];
没错,直接设置控制器的属性就行了。还可以在控制器代码内配置: function AppController($router) {
$router.config([
{path: '/index',redirectTo: '/'}
]);
}
以前的 AppController.$routeConfig = [
{path: '/',component: 'home'},{path: '/index',redirectTo: '/'}
];
当然,你也可以直接设置别名: {path: '/',component: 'home',as: 'home'}
基本上,一个路由只需要一条无需换行的代码便可以配置完成了。 指向路由的链接
<a ng-link='index' class="navbar-brand">Angular2的路由</a>
ng-viewport实在不知道这个 其实,它和以前的 <ng-viewport></ng-viewport>
<div ng-viewport></div>
<div ng-viewport="content"></div>
这三种都行。最后一种用于有多个构件需要加载的情况。 路由参数路由参数和以前相比,没什么变化,它在路由中的配置如下: {path: '/articles/:id',component: 'articles'}
在控制器中,也还是使用 angular.module('webApp.articles',[])
.controller("ArticlesController",['$routeParams','$router',ArticlesController]);
function ArticlesController($routeParams,$router){
this.id = $routeParams.id || 0;
}
链接的格式也没有变化,仍然使用: <li><a ng-link='articles({id: 1})'>AngularJS常用插件与指令收集</a></li>
打完收功。 转自:http://zai.io/topic/detail/news/18f1cfc74c10067e (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |