关于ng-router嵌套使用和总结
那是某个下午的review代码的过程。js中有一段html,像是这样。
var html = '<div>...此处还有很多html代码....</div>'
我的同事想我提出,js里有这么多html,看的非常扎眼。应该将这些代码放在另外的一个地方,然后调用这个文件就好了。
虽然这段html代码不长,但是想想也是非常有道理(都是老司机啊)
于是我就下班反思了下如何实现
首先这个页面就是ng-router实现的
类似于这样
content 已经使用了ui-router 通过上面的nav控制。
index.html
<nav>
<ul>
<li ui-sref='index'>home</li>
<li ui-sref='picture'></li>
<li ui-sref='blog'></li>
</ul>
<nav>
<main vi-main></main>
js
app.run(['$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
]);
app.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider
.otherwise('/');
$stateProvider
.state('home', {
url: '/',
views: {
"@": {
templateUrl: './home.html',
controller: 'HomeController'
}
},
title: '首页'
})
.state('picture', {
url: '/picture',
views: {
"@": {
templateUrl: 'picture.html',
controller: 'PictureController'
}
}
})
.state('blog', {
url: '/:id',
views: {
"@": {
templateUrl: 'blog.html',
controller: 'blogController',
controllerAs: 'vm'
}
}
})
}]);
但是此刻我希望home一打开,里面还有可以默认加载的页面
home.html
<div ui-view="homeA"></div>
<div ui-view="homeB"></div>
app.run(['$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
]);
app.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider
.otherwise('/');
$stateProvider
.state('home', {
url: '/',
views: {
"@": {
templateUrl: './home.html',
controller: 'HomeController'
},
"homeA@": {
templateUrl: './home.html',
controller: 'HomeAController'
},
"homeB@": {
templateUrl: './home.html',
controller: 'HomeBController'
},
},
title: '首页'
})
.state('picture', {
url: '/picture',
views: {
"@": {
templateUrl: 'picture.html',
controller: 'PictureController'
}
}
})
.state('blog', {
url: '/:id',
views: {
"@": {
templateUrl: 'blog.html',
controller: 'blogController',
controllerAs: 'vm'
}
}
})
}]);
更棒的ui-router https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views
然后第二天改好了给同事看,同事又给了一种templateCache
html
<div ng-include=" 'templateId.html' "></div>
var myApp = angular.module('myApp', []);
myApp.run(function($templateCache) {
$templateCache.put('templateId.html', 'This is the content of the template');
});
更多关于templateCache使用 https://docs.angularjs.org/api/ng/service/$templateCache
关于ng-router嵌套使用和总结的更多相关文章
- vue(19)嵌套路由
嵌套路由 有时候在路由中,主要的部分是相同的,但是下面可能是不同的.比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message.这时候就需要使用到嵌套路由.项目结构如下: ...
- 利用Angular实现多团队模块化SPA开发框架
0.前言 当一个公司有多个开发团队时,我们可能会遇到这样一些问题: 技术选项杂乱,大家各玩各 业务重复度高,各种通用api,登录注销,权限管理都需要重复实现(甚至一个团队都需要重复实现) 业务壁垒,业 ...
- python变量和变量赋值的几种形式
动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保 ...
- 【10】react 之 react-router
1.1. 路由 路由:URL与处理器的映射. 浏览器当前的 URL 发生变化时,路由系统会做出一些响应,用来保证用户界面与 URL 的同步. 1.2. Router安装 npm i react-r ...
- React Router 4.0 ---- 嵌套路由和动态路由
嵌套路由,从广义上来说,分为两种情况:一种是每个路由到的组件都有共有的内容,这时把共有的内容抽离成一个组件,变化的内容也是一个组件,两种组件组合嵌套,形成一个新的组件.另一种是子路由,路由到的组件内部 ...
- vue router 中,children 中 path 为空字符串的路由,是默认打开的路由(包括在 el-tabs 中嵌套路由的情况)
详见该页面的最后一个代码块:https://router.vuejs.org/zh/guide/essentials/nested-routes.html#%E5%B5%8C%E5%A5%97%E8% ...
- vue router的嵌套使用与传值的query方式
嵌套路由 当我们不满足与 /home这种路由,而是希望通过 /home/news和/home/message访问一些内内容 那么就需要嵌套路由了 实现嵌套路由有两个步骤: ·创建对应的子组件,并且在路 ...
- Angularjs ui router,路由嵌套 父controller执行问题
解决方式来源:https://stackoverflow.com/questions/25316591/angularjs-ui-router-state-reload-child-state-onl ...
- angular2 学习笔记 ( Router 路由 )
参考 : https://angular.cn/docs/ts/latest/guide/router.html#!#can-activate-guard https://angular.cn/doc ...
- angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation
今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:
随机推荐
- win安装pycurl和linux安装pycurl
1.win pip install wheel http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应的包: pip install e:\pycurl-7.4 ...
- Pandas之DataFrame——Part 2
''' [课程2.] 时间模块:datetime datetime模块,主要掌握:datetime.date(), datetime.datetime(), datetime.timedelta() ...
- Windows Server 2008允许多用户登录远程桌面
远程桌面是windows管理员对服务器进行管理最常用的方式,默认情况下windows server服务器是只允许单个远程链接的,如何开启多个用户远程桌面,下面就来介绍. 工具/原料 windo ...
- cat /proc/maps 进程内存映射【转】
转自:http://blog.csdn.net/fisher_jiang/article/details/5063852 proc/<PID>/maps查看进程的虚拟地址空间是如何使用的. ...
- javascript与mongodb的日期时区问题
默认情况下,js的日期生成是当地时区,但默认显示是按照GMT显示的: > var c = new Date('2017-10-31 06:00:00'); > c 2017-10-30T2 ...
- 允许root用户登录ssh
使用普通用户登录Ubuntu系统,打开命令行窗口 更改root用户密码,命令:sudo passwd root 首先输入当前用户的密码 然后输入root账户的密码 确认root用户的密码 编辑ssh的 ...
- 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...
- 洛谷 P1181 数列分段Section I【贪心/最少分成多少合法的连续若干段】
题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 输入文件divide_ ...
- SQL表操作习题1
建表
- [读书笔记] CSS揭秘-背景与边框
半透明边框 默认情况下,背景会延伸到边框所在的区域下层.可以通过background-clip属性调整该默认行为. border: 10px solid rgba(0,0,0,.2) backgrou ...