那是某个下午的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嵌套使用和总结的更多相关文章

  1. vue(19)嵌套路由

    嵌套路由 有时候在路由中,主要的部分是相同的,但是下面可能是不同的.比如访问首页,里面有新闻类的/home/news,还有信息类的/home/message.这时候就需要使用到嵌套路由.项目结构如下: ...

  2. 利用Angular实现多团队模块化SPA开发框架

    0.前言 当一个公司有多个开发团队时,我们可能会遇到这样一些问题: 技术选项杂乱,大家各玩各 业务重复度高,各种通用api,登录注销,权限管理都需要重复实现(甚至一个团队都需要重复实现) 业务壁垒,业 ...

  3. python变量和变量赋值的几种形式

    动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保 ...

  4. 【10】react 之 react-router

    1.1.  路由 路由:URL与处理器的映射. 浏览器当前的 URL 发生变化时,路由系统会做出一些响应,用来保证用户界面与 URL 的同步. 1.2.  Router安装 npm i react-r ...

  5. React Router 4.0 ---- 嵌套路由和动态路由

    嵌套路由,从广义上来说,分为两种情况:一种是每个路由到的组件都有共有的内容,这时把共有的内容抽离成一个组件,变化的内容也是一个组件,两种组件组合嵌套,形成一个新的组件.另一种是子路由,路由到的组件内部 ...

  6. vue router 中,children 中 path 为空字符串的路由,是默认打开的路由(包括在 el-tabs 中嵌套路由的情况)

    详见该页面的最后一个代码块:https://router.vuejs.org/zh/guide/essentials/nested-routes.html#%E5%B5%8C%E5%A5%97%E8% ...

  7. vue router的嵌套使用与传值的query方式

    嵌套路由 当我们不满足与 /home这种路由,而是希望通过 /home/news和/home/message访问一些内内容 那么就需要嵌套路由了 实现嵌套路由有两个步骤: ·创建对应的子组件,并且在路 ...

  8. Angularjs ui router,路由嵌套 父controller执行问题

    解决方式来源:https://stackoverflow.com/questions/25316591/angularjs-ui-router-state-reload-child-state-onl ...

  9. angular2 学习笔记 ( Router 路由 )

    参考 : https://angular.cn/docs/ts/latest/guide/router.html#!#can-activate-guard https://angular.cn/doc ...

  10. angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

    今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:

随机推荐

  1. Git的优点

    没有网络时也可以使用版本控制系统,这点svn做不到,如果你一直有网络,这个可以忽略: git由于所有版本都在本地的.git目录数据库中,因此它可以用指针随时改变指向,指向不同的版本,把它作为最新的he ...

  2. eclipse搭建ssm框架的maven的工程

    版本:eclipse:Indigo Service Release 2.  jdk :jdk1.7.0_03. maven:apache-maven-3.3.3 . 上面的3个东西 先下载下来.然后运 ...

  3. Spring Cloud配置文件加载优先级简述

    Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方:如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等:本文 ...

  4. 转 Scrapy笔记(5)- Item详解

    Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便. Item提供了类字典的API,并且可以很方便的声明字段,很多Scra ...

  5. java基础练习 15

    import java.util.Scanner; public class Fiftheen { /*有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 ...

  6. 测试 System.SysUtils.TStringHelper

    来自:http://www.cnblogs.com/del/archive/2013/06/14/3135002.html -------------------------------------- ...

  7. Git 使用指南(cmd + gui)

    git 使用简易指南http://www.bootcss.com/p/git-guide/ Git版本控制使用方法入门教程http://www.uml.org.cn/pzgl/201204285.as ...

  8. SpringMVC + Hibernate + MySQL 的简易网页搭建(Control实现篇)

    在完成Dao层的实现之后,接下来我们需要继续开发我们网页的Control层以及View层. 从开发网页的角度来说: 1. Control层之下的Dao层和Service层可以看做是一个网页的底层负责与 ...

  9. 洛谷——P1029 最大公约数和最小公倍数问题

    P1029 最大公约数和最小公倍数问题 题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1 ...

  10. 加强版dd工具dc3dd

    加强版dd工具dc3dd   dd是Linux最常用的磁盘备份工具,但缺少渗透测试常用的数据校验.hash等重要功能.Kali Linux提供的一款专用工具dc3dd.该工具是dd的加强版.它在dd的 ...