关于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的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:
随机推荐
- 7月11日day3总结
今天学习过程和总结 一 1.输出流的字符流.字节流 2.加锁.多线程的理解,产生的原因.cpu同时运行最大数.其他的都在及时切换.1.继承Thred类,重写run方法. 2.实现Runnable接口. ...
- linux fg bg ctrl + z jobs & 等命令
fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& 最经常被用到这个用在一个命令的最后,可以把这个命令放到 ...
- Nodejs 网络爬虫(资讯爬虫) 案例
1. superagent superagent 是一个流行的nodejs第三方模块,专注于处理服务端/客户端的http请求.在nodejs中,我们可以使用内置的http等模块来进行请求的发送.响应处 ...
- Codeforces Round #290 (Div. 2) B. Fox And Two Dots(DFS)
http://codeforces.com/problemset/problem/510/B #include "cstdio" #include "cstring&qu ...
- HDU1892 See you~
Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission( ...
- 组合数问题(NOIP2016)
原题传送门 这题啊. 裸的杨辉三角. 预处理杨辉三角和答案即可 下面贴代码 #include<iostream> #include<cstdio> #include<al ...
- Sqlite 修改字段的名称。
Sqlite 不支持直接修改字段的名称. 我们可以使用别的方法来实现修改字段名. 1.修改原表的名称 ALTER TABLE table RENAME TO tableOld; 2.新建修改字段后的表 ...
- 多线程之:竞态条件&临界区
竞态条件指:当一个对象或者一个不同步的共享状态,被两个或者两个以上的线程修改时,对访问顺序敏感,则会产生竞态条件. 临界区指:导致竞态条件发生的代码区. 如:increase块为临界区 public ...
- sersync+rsync作实时同事
http://liubao0312.blog.51cto.com/2213529/1677586 配置搞定,参照上面的文章,用时搞一搞就OK. 注意IPTABLES的配置及环境变量 最简陋配置: rs ...
- android 效果
1.TextView 有边界的水波效果: android:background="?android:attr/selectableItemBackground" 无边界的水波效果: ...