ui-router(三)controller与template
这篇就是在以前的基础上,把客户端angular.js 负责的部分整体串起来演示一下.
我们按照angular执行顺序来做前提准备:
(1)Client 根目录下 index.html 首先加载angular.js 和 ui-router.js 文件
<script src="http://cdn.bootcss.com/angular.js/1.3.8/angular.min.js"></script>
<script src="./vender/angular-ui-router-0.2.13.js"></script>
(2)引用 app.js
<script src="/app.js"></script>
此文件是 gulpfile.js 通过配置任务生成的一个文件,此文件包含了 angular.js 使用的 router 配置,controller控制器脚本,服务,组件,过滤器及初始化注册config配置等.
(3)指定 angular.js 接管部分及视图填充部分
<html ng-app="YIJIEBUYI”> //angular.js 接管标识
…….
<body>
<div ui-view="container" id="BodyContainer”> //模板视图填充部分 </div>
</body>
(4)scripts 根目录下创建一个 main.js 的初始化注册脚本.
angular.module('YIJIEBUYI', ['ui.router']) .config(['$locationProvider', '$urlRouterProvider', function($locationProvider, $urlRouterProvider) { $urlRouterProvider.otherwise("/blog"); }]);
前面的文章已经说过了 module 下面几个重要的 api ,config 对于常用功能服务及公用模块的初始化注册起到了很重要的角色.因为我们从头到尾要用到 ui.router 模块来解析路由,所在这里注册.
我们在前面的博文里说过了,angular.js默认路由导航还是需要 ng-Route模块,所以我们在 main.js 里面用 ng-Route 模块的 urlRouterProvider 服务指定了一个启动默认路由定位到 /blog
就是这一句的作用 $urlRouterProvider.otherwise("/blog");
(5)定制路由
routes 根目录下我们创建一个 blog.js的脚本文件
angular.module('YIJIEBUYI').config(['$stateProvider',function($stateProvider){
$stateProvider.state('blog',{
url:'/blog',
views:{
'container':{templateUrl:'templates/blog_layout.html'}
}
}).state('blog.detail',{
url:'/:blogID',
views:{
'container':{templateUrl:'templates/blog_detail.html'}
}
});
}]);
上面我们依赖注入了 $stateProvider 服务,然后定制了2个路由 /blog 博客主页和 /blog/1234 博客详情页
(6)templates 目下创建模板视图
header.html
footer.html
这是页头和页脚视图,因为共用的地方很多,所以单独做成2个局部视图
blog.layout.html
这是博客首页,你也可以理解成母版页
<div ng-controller="blogLayoutCtrl"> <span>{{title}}</span>
<div ng-include="'templates/header.html'">header</div>
<div ui-view="container">
</div>
<div ng-include="'templates/footer.html'">footer</div>
</div>
你可以看到这个母版页里通过 ng-include 把通用的页头,页尾模板加载进来.
他有一个自己的控制器 ng-controller=“blogLayoutCtrl"
里面可以处理母版页的一些逻辑控制.
下面有 视图容器 <div ui-view="container"></div> 这里面可以装载嵌套视图
blog_detail.html
这是博客详情页
此视图只会嵌套在 blog_layout.html 母版页中,所以这个视图只需要关注自己所需要的逻辑即可
<div ng-controller="blogDetailCtrl" ui-view="container"> {{title}} </div>
他对应的控制器 blogDetailCtrl
(7)我们要在controllers根目录下创建上面所需要的2个控制器
母版页
blogLayoutCtrl.js
angular.module('YIJIEBUYI').controller('blogLayoutCtrl', ['$scope','$state',
function ($scope, $state) {
$scope.title='一介布衣-博客共用模板';
}
]);
博客详情页
blogDetailCtrl.js
angular.module('YIJIEBUYI').controller('blogDetailCtrl', ['$scope','$state',
function ($scope, $state) {
$scope.title='一介布衣-博客详情页';
}
]);
我们上面的controller 都给 $scope对象定义了一个title属性.
启动应用
zhangzhi@moke:~/code/work$ gulp
默认定位到 /blog 母版视图,
修改url到/blog/234234 定位到博客详情页视图
ui-router(三)controller与template的更多相关文章
- AngularJS 使用 UI Router 实现表单向导
Today we will be using AngularJS and the great UI Router and the Angular ngAnimate module to create ...
- 【原创】ui.router源码解析
Angular系列文章之angular路由 路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分. 那么,对于angular而言,它 ...
- ngRoute 与ui.router区别
angular路由 路由 (route) ,几乎所有的 MVC(VM) 框架都应该具有的特性,因为它是前端构建单页面应用 (SPA) 必不可少的组成部分. 那么,对于 angular 而言,它自然也有 ...
- [转]AngularJS 使用 UI Router 实现表单向导
本文转自:http://www.oschina.net/translate/angularjs-multi-step-form-using-ui-router 今天我们将使用AngularJs和伟大的 ...
- angular 的ui.router 定义不同的state 对应相同的url
Angular UI Router: Different states with same URL? The landing page of my app has two states: home-p ...
- vue mandmobile ui实现三列列表的方法
vue mandmobile ui实现三列列表的方法 请问这种列表的要用那个组件好呢?Cellitem 只能用到两列,这个要三列的怎么弄?mand的好像没有listview,grid组件的 问了man ...
- angularjs ngRoute和ui.router对比
ngRoute模块是angularjs自带的路由模块,ui.router是一个第三方路由模块,接下来将对两者进行一个对比: ng-router(angular-router.js) ng-view n ...
- angular ui.router 路由传参数
angular已经用了一段时间了,最近在做路由,做一下笔记. 路由跳转的时候进行穿参 ui.router方式 <a ui-sref="edit({id:5})"> 编辑 ...
- ngRoute 和 ui.router 的使用方法和区别
在单页面应用中要把各个分散的视图给组织起来是通过路由机制来实现的.本文主要对 AngularJS 原生的 ngRoute 路由模块和第三方路由模块 ui.router 的用法进行简单介绍,并做一个对比 ...
随机推荐
- FIS3使用官方例子流程
fis3 的常用例子:https://github.com/fex-team/fis3-demo git链接可在页面中获取替换下面的git链接: 例子准备: git clone https://git ...
- pytest文档1-环境准备与入门
前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的. 刚开始我的内心是拒绝的,我想我用unittes ...
- Spring MVC一事务控制问题
在近期一个项目中用了Spring MVC作为控制层框架,但却出现了一个让人非常费解的问题:事务控制. Spring MVC的配置文件名称为:springMVC-servlet.xml,内容例如以下: ...
- [转] NSMapTable 不只是一个能放weak指针的 NSDictionary
NSMapTable 不只是一个能放weak指针的 NSDictionary NSMapTable是早在Mac OS X 10.5(Leopard)的引入集合类.乍一看,这似乎是作为一个替换NSDic ...
- 查看DNS主机名解析的主机IP并向DNSserver进行DNS域名解析
一.查看DNS主机名解析的主机IP host 命令 用途 把一个主机名解析到一个网际地址或把一个网际地址解析到一个主机名. 语法 host [-n [ -a ] [ -c Class] [ -d ] ...
- 基于cookie或session的登陆验证之安全性问题
因为session是关了浏览器就没了.所以可以通过cookie结合session方法来做验证! 第一次登陆,生成一个cookie,保存一些加密的帐号信息,然后再生成一个session 这样去其他需要验 ...
- jQuery代码性能优化
代码优化是一个很重要的开发态度,一点点的优化对于程序来讲可能是微乎其微的,但是把所有的一点都加起来就能够达到水滴石穿的效果,所以要在平时的开发过程中养成优化代码的好习惯. 1. 检测元素是否存在 避免 ...
- 算法导论-矩阵乘法-strassen算法
目录 1.矩阵相乘的朴素算法 2.矩阵相乘的strassen算法 3.完整测试代码c++ 4.性能分析 5.参考资料 内容 1.矩阵相乘的朴素算法 T(n) = Θ(n3) 朴素矩阵相乘算法,思想明了 ...
- Logon database Tiger引起DataGuard不同步问题
当DataGuard升级CPU后.发现主备库不能同步了,日志报错,所以在主库的运行的升级的后脚本"@catbundle.sql cpu apply"不能同步到备库 现象: brok ...
- Activiti 流程启动及节点流转源代码分析
作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文主要是以activiti-study中的xiaomage.xml流程图为例进行跟踪分析 详细的 ...