一.前言
Angularjs提供多种模板加载方案。
1.最基础的为通过预先声明路径的方式,通过Ajax获取。
2.使用诸如gulp-html2js构建工具,将HTML模板转化为js文件使用。
3.使用script标签引入。
一般实际情况下,开发时使用第一种方式,部署时采取第二种方式,不会采用第三种方式。本文简要说明一下标签引入模板。Angularjs本身支持的标签type为text/ng-template,现在来支持另一种type:text/template。
二.代码实现
$templateCache内的模板优先级最高,所以需要使用到。angularjs本身采取将script指令化的方式来实现。
var scriptDirective = ['$templateCache', function($templateCache) { return { restrict: 'E', terminal: true, compile: function(element, attr) { if (attr.type == 'text/ng-template') { var templateUrl = attr.id, text = element[0].text; $templateCache.put(templateUrl, text); } } }; }];
代码非常简单,判定类型,写入模板即可。封装后完全看不到内部实现,所以才会再用个人方式实现,用以理解。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>Inline Template</title> <script type="text/template" id="love"> <h3>love is color blind</h3> <p>why so serious about the world, behind the darkness</p> </script> <script src="angular1.2.9.js"></script> <script src="angular-sanitize.js"></script> <script src="template.js"></script> </head> <body ng-app="template"> <article ng-controller="TemplateCtrl"> <div ng-bind-html="story"></div> </article> </body> </html>
template.js
angular.module('template', ['ngSanitize']) .run(['$document', '$templateCache', function($document, $templateCache) { var scripts = Array.prototype.slice.call($document[0].scripts, 0); scripts.forEach(function(script) { if (script.type === 'text/template') { $templateCache.put(script.id, script.innerHTML); } }); }]) .controller('TemplateCtrl', ['$scope', '$templateCache', '$log', function($scope, $templateCache, $log) { $scope.story = $templateCache.get('love'); }]);
通过document.scripts这样接近原始的方式来获取对应标签,然后将标签内部的内容写入$templateCache即可,运行效果如下:
相关推荐
这可以通过传统的`<script>`标签实现,链接到Google的CDN(内容分发网络)来获取AngularJS库。 ```html ***"> ``` 第二步是使用`ng-app`指令定义AngularJS应用的边界。你可以将`ng-app`直接放置在HTML的根元素上...
这一连串的执行流程构成了AngularJS的核心工作原理,允许开发者编写声明式的代码,由AngularJS负责管理和同步应用状态和视图。理解了AngularJS的执行流程,开发者能够更好地进行开发和调试,构建出高性能、响应式...
AngularJS Directives由编译器处理,该编译器会在DOM加载完成后查找与AngularJS相关的指令,并执行相应的函数。Directives通常以特定前缀(如ng-)开始,以便AngularJS识别它们。 ##### 1. **指令的生命周期** - *...
理解AngularJS Directives的工作原理对于高效地开发复杂的应用程序至关重要。 - **基础概念**:学习如何创建基本的指令,包括使用`@`、`=`和`&`等符号来绑定指令的行为。 - **高级用法**:深入探索指令的链接函数、...
在本文中,我们将深入探讨AngularJS中的路由切换实现方法,通过具体的实例来理解其工作原理和操作技巧。 1. **引入依赖库** 实现AngularJS路由切换,首先要确保引入了AngularJS的核心库`angular.min.js`和路由插件...
### 响应式网页设计与AngularJS核心知识点详解 #### 一、响应式网页设计(Responsive Web...通过本书的学习,读者将能够掌握响应式网页设计的基本原理和技术要点,并学会如何利用AngularJS来开发高质量的Web应用程序。
在标签中,"bootstrap模板"和"网站模板"进一步强调了这是基于Bootstrap的可复用设计,适用于创建各种类型的网站。Bootstrap模板通常具有跨浏览器兼容性和响应式特性,这意味着无论用户使用何种设备(如桌面、平板或...
4. 懒加载:对于大型项目,可以采用懒加载策略,只有当用户切换到某标签时才加载其内容,减少初始加载时间。 五、案例分析 在提供的"angularjs-tabs滑动切换"示例中,我们可以看到如何实现平滑的标签页滑动效果。这...
- **`replace`, `template`, 和 `transclude`**:这些指令允许开发者控制元素的替换、模板的加载以及子元素的传递。 总之,《Leanpub.D3.on.AngularJS.Apr.2014》这本书是一本非常全面的指南,涵盖了从基础知识到...
**AngularJS入门教程引导程序...通过理解和实践这些基本原理,开发者可以逐步构建更复杂的AngularJS应用程序。在后续的学习中,我们将进一步探索服务、控制器、指令和其他高级特性,使你对AngularJS有更全面的认识。
要在AngularJS项目中使用百度地图,需要在模板中放置包含地图的div标签,并在相应的控制器中编写初始化地图的逻辑。 但是,直接在AngularJS项目中嵌入百度地图可能会遇到一些问题。在文档中提到,如果将JavaScript...
在ng-app中可以指定一个模块名称,AngularJS将会加载和编译与该模块相关的模板和指令,并创建一个应用程序的注入器(injector)。注入器是一个服务,用于提供和管理应用中的依赖关系。 在AngularJS的初始化过程中,会...
8. **前端框架与库**: 虽然没有明确提及,但现代网页模板可能使用前端框架(如Bootstrap、AngularJS、Vue.js等)和库(如jQuery)来加速开发和提供额外功能。了解这些工具的使用可以帮助开发者更高效地利用模板。 9...
这种做法在AngularJS编译HTML模板并应用数据绑定之前,浏览器就已经尝试去加载src指定的图片资源了。如果animal.picture的值是在AngularJS的控制器中定义的,那么在数据绑定生效之前,浏览器会尝试加载一个未经解释...
通过深入研究这些作业解决方案,你可以掌握如何利用AngularJS创建高效的SPA,并理解其背后的原理。这将对你的JavaScript开发技能大有裨益,尤其是在现代Web应用开发中,SPA已经成为主流设计模式。
- **AngularJS的ngRoute**:ngRoute是AngularJS的一个核心模块,它提供了路由服务,使得SPA可以根据URL来加载不同的视图,实现页面的无刷新跳转。通过配置`$routeProvider`,可以设置各个路由对应的模板和控制器。 ...
尽管如此,AngularJS仍有大量的项目在运行,理解其工作原理对于维护旧项目或迁移至新版本至关重要。 本教程"angular-tutorials1"涵盖了AngularJS的基础知识,通过实际项目演练,可以帮助读者掌握这个框架并应用于...
在Web开发中,有时我们需要创建类似桌面应用的...当然,还有许多高级的库和框架,如jQuery UI、Bootstrap和AngularJS,它们提供了更强大且开箱即用的选项卡组件,但这个基础实现能帮助理解选项卡功能的基本工作原理。
AngularJS的 `$templateCache` 用于存储模板,当路由改变时,可以清除不再需要的模板。在 `.run` 配置中监听 `$routeChangeStart` 事件,移除当前路由对应的模板: ```javascript .run(function($rootScope, $...