angular 缓存模板 ng-template $templateCache
由于浏览器加载html模板是异步加载的,如果加载大量的模板会拖慢网站的速度,这里有一个技巧,就是先缓存模板。
使用angular缓存模板主要有三种方法:
方法一:通过script标签引入
<script type="text/ng-template" id="hello.html">
<h4>hello</h4>
<p>这是script标签获取模板文件的方式</p>
<a href="http://www.baidu.com">标签启用templateCache方式</a>
</script>
注意,这里的id只是指十几使用模板时的一个引用,而不是一个url, 模板的实际内容在script标签里。ng-template指明这是angular模板。
当然,模板的实际内容我们也可以使用themeleaf的标签来引用一些html页面,如th:include和th:replace。
<script type="text/ng-template" id="hello.html">
<div th:replace="components/header :: header"></div> //<div th:include="components/footer :: footer"></div>
</script>
th:replace和th:include的参数格式是:templatename::[domselector]表示引入模板页面中的某个模块。
其中templatename引入模板页面,domselector引入自身模板的模块。
注意:script标签模板不需要包含在文档头部。但他必须在$rootElement下,不然模板将会被忽略。
方法二:通过$templateCache服务来实现
angular.module('myApp', [])
.controller('myCtrl', ['$scope','$templateCache', function($scope,$templateCache){
var tmp = '<h4>hello</h4>'
+ '<p>这是直接调用$templateCache服务获取模板文件的方式</p>'
+ '<a href="http://www.baidu.com">服务启用templateCache方式</a>';
$templateCache.put('hello.html',tmp);
}])
$templateCache的put()方法负责向内存中写入模板内容,然后在directive中用controllerUrl:'hello.html'就可以使用,甚至可以使用ng-include="'hello.heml'"来调用。
ng-include的方式:
<div ng-app="myApp" ng-controller="myCtrl as ctrl">
<div ng-include="'hello.html'"></div>
</div>
directive的方式:
angular.module('myApp', [])
.directive('templateDemo', ['$log', function($log){
return {
restrict: 'A',
templateUrl: 'hello.html',
replace: true,
link: function($scope, iElm, iAttrs, controller) {}
}
}])
//html
<div ng-app="myApp" ng-controller="myCtrl as ctrl">
<div template-demo></div>
</div>
$templateCache基于cacheFactory,接口保持一致,方法主要有:
| 方法 | 说明 |
|---|---|
| put | 向内存写入模板内容 |
| get | 从内存获取模板内容 |
| remove | 传入key值,删除对应模板内容 |
| removeAll | 删除所有模板内容 |
| destroy | 解除key-value对应关系,但不释放内存 |
| info | 模板缓存对象的信息 |
方法三:$templateCache和ng-bind-html
<div ng-app="Demo" ng-controller="testCtrl as ctrl">
<div ng-bind-html="ctrl.text"></div>
</div>
angular.module("Demo", [])
.run(["$templateCache",templateCache])
.controller("testCtrl", ["$templateCache","$sce",testCtrl]);
function templateCache($templateCache){
$templateCache.put('templateId.html', '<a>This is the content of the template</a>');
}
function testCtrl($templateCache,$sce) {
var tpl = $templateCache.get('templateId.html');
tpl = $sce.trustAsHtml(tpl);
this.text = tpl;
};
}
注意:使用ng-bind-html就要使用\$sce转成受信任的html插入代码。
angular 缓存模板 ng-template $templateCache的更多相关文章
- --@angularJS--模板加载之缓存模板demo
不用缓存模板的写法如下: 1.index.html: <!DOCTYPE HTML><html ng-app="app"><head> & ...
- 用12个例子全面示范Angular的模板语法
template分支,用12个例子全面示范Angular的模板语法 // 使用方法 git clone https://git.oschina.net/mumu-osc/learn-component ...
- Angular - Templates(模板)
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 在Angular中,模板是一个包含了Angular特定元素和属性的HTML.Angula ...
- 模板层template
继续之前的views,你可 能已经注意到我们例子中视图中返回的的方式有点特别.也就是说.HTML被直接硬编码在Python代码之中 def current_datetime(request): now ...
- angular 2 - 001 ng cli的安装和使用
angular cli 创建项目和组件 ng new my-app --skip-install cd my-app cnpm install ng serve localhost:4200 angu ...
- DjangoMTV模型之视图层views及模板层template
Django视图层中views的内容 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容(render),也可以是一个重定向( ...
- dj 模板层template
1 模板语法之变量 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法: {{var_name}} def index(request): import datetime s=" ...
- c# 一种缓存模板
在很多项目中,尤其是服务端,我们需要临时缓存一些数据,对于完整的我就不说了.主要的保持方法有: 1.大型数据库 2.缓存组件 3.文件(按照自己定义的格式存储) 4.一些缓存数据库(sqlte,h2, ...
- ionic准备之angular基础——模板引入(7)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 【[CQOI2018]解锁屏幕】
状压这个东西好像没有什么能优化的高级东西,像什么斜率优化,单调队列在状压的优化上都很少见 而最常见的状压优化就是预处理优化了, 这道题就预处理一下所有点对之间连线上的点,之后压成状态就能做到\(O(2 ...
- Odoo模块添加logo
模块的static目录是专门用于存放静态文件内容如:图片.css等的.其中,description目录是存放关于模块的一些描述性的文件的,其中,模块的图标也放在下面,以icon命名.
- Word 2019 for mac更新喽!
新的Word2019添加了许多的新功能,提供了新的文档处理方式,如改进的数字笔功能.焦点模式.学习工具和翻译,为用户提供了用于创建专业而优雅的高效文档工具,帮助用户节省时间,并得到优雅美观的结果,有效 ...
- [转]TortoiseSVN客户端的安装
TortoiseSVN是windows平台下Subversion的免费开源客户端. 一般我们都是先讲讲服务器的配置,然后再讲客户端的使用,但是在TortoiseSVN上,却可以反过来.因为,如果你的要 ...
- Android解析json数据
Json数据 [{"code":"110000","sheng":"11","di":"0 ...
- Web | DOM基本操作
基本概念 文档对象模型 (DOM) 是HTML和XML文档的编程接口.它提供了对文档的结构化的表述,并定义了一种方式可以使程序对该结构进行访问,从而改变文档的结构,样式和内容.DOM 将文档解析为一个 ...
- ERP系统和MES系统的区别
公司说最近要上一套erp系统,说让我比较一下,erp系统哪个好,还有mes系统,我们适合上哪个系统,其实我还真的不太懂,刚接触erp跟mes的时候,对于两者的概念总是傻傻分不清楚,总是觉得既然都是为企 ...
- windows安装Oracle数据库
我装的版本是Oracle11,64位,直接网上下载即可.安装过程中也出现了一些坑,现在整理了一下. 1.下载的目录和安装的目录最好放到英文目录下,别放到中文或者特殊字符的文件夹中,点击setup.ex ...
- TinyMCE插件:RESPONSIVE filemanager 9 安装与配置
RESPONSIVE filemanager 功能: 文件上传 文件下载 重命名文件 删除文件 新建文件夹 为每个用户创建子目录 上传文件效果图: 浏览文件效果图: 文件说明: filemanager ...
- less.js插件监听
<script>less.watch();</script> 在不手动刷新/重新加载页面会自动监听less的变化,页面做出相应的变化 . 写在这两行后面就好 了 <lin ...