AngularJS学习笔记(六)---指令

AngularJS四大核心特性—指令

在之前的内容中提到AngularJS的四个核心的特性是以下四点:

  • MVC
  • 模块化和依赖注入
  • 双向数据绑定
  • 指令

指令模块

在指令这个模块中主要讲述指令的使用以及原理,内容包括:

  • 解析最简单的指令hello:匹配模式restrict
  • 解析最简单的指令hello:template、templateUrl、$templateCache
  • 解析最简单的指令hello:replace与transclude
  • comile与link(操作元素、天剑CSS样式、绑定事件)
  • 指令与控制器之间的交互
  • 指令间的交互
  • scope的类型与独立scope
  • scope的绑定策略
  • AngularJS内置的指令
  • 实力解析Expander
  • 实例解析Accordion
  • 指令的运行原理:compile和link
  • 总结:ERP类型的系统必备的UI组件
  • 总结:互联网/电商型系统必备的UI组件
  • 第三方指令库angular-ui
  • directive思想的起源和原理概述

解析最简单的指令hello

我们首先来看一个实际的例子:

html

<!doctype html>
<html ng-app="MyModule">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <hello></hello>
        <div hello></div>
        <div class="hello"></div>
        <!-- directive:hello -->
        <div></div>
    </body>
    <script src="framework/angular-1.3.0.14/angular.js"></script>
    <script src="HelloAngular_Directive.js"></script>
</html>

js

var myModule = angular.module("MyModule", []);
myModule.directive("hello", function() {
    return {
        restrict: 'AEMC',
        template: '<div>Hi everyone!</div>',
        replace: true
    }
});

效果
这里写图片描述

这是一个最简单的directive指令,其中有三个配置项:restrict,template,replace
这里使用了四种匹配的方式来实现hello这个指令,分别是AEMC,然后使用template中的语句,来replace掉了hello指令的部分。

template:'<div>Hi everyone!</div>'
1.解析最简单的指令hello:匹配模式restrict

一共有四种匹配的模式ACME

这里写图片描述

  • 推荐使用元素和属性的方式,也就是EA的方式来进行匹配。
  • M(注释模式)下注意前后要有一个空格,不然无法正确匹配
  • 当需要创建带有自己的模板的指令时,使用元素名称的方式创建
  • 当需要为已有的HTML标签增加功能时,使用属性的方式创建
2.解析最简单的指令hello:template、templateUrl、$templateCache

在上述的例子中,我们使用了template,当中是html的字符串,但是这样不太好,如果内容很多,字符串就会过长,而且可能在js中要涉及大量的拼接,效率也不高。

template:'<div>Hi everyone!</div>'

所以我们引入templateUrl来引入一个独立的html文件作为模板,这样更方便编写

templateUrl:'hello.html'

另外还有一个$templateCache

var myModule = angular.module("MyModule", []);

//注射器加载完所有模块时,此方法执行一次
myModule.run(function($templateCache){
    $templateCache.put("hello.html","<div>Hello everyone!!!!!!</div>");
});

myModule.directive("hello", function($templateCache) {
    return {
        restrict: 'AECM',
        template: $templateCache.get("hello.html"),
        replace: true
    }
});

从cache字面意思上可以看出是要缓存,那么我们使用run这个方法,在加载完模块以后,先使用 $templateCache.put的方法将一段html的代码缓存到cache中。

当需要写template的时候,再使用 $templateCache.get的方法从换从中取出需要的代码就可以了。

3.解析最简单的指令hello:replace与transclude
  • replace设置为true,那么template中的html代码,会代替hello标签出现在html中,如果设置为false那么就不会代替hello标签,html中还是一个hello的标签存在

  • transclude是一个可以实现指令嵌套的选项。我们可以在hello标签中嵌套一个标签,下面来看一个小例子:

html

<!doctype html>
<html ng-app="MyModule">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <hello>
            <div>这里是指令内部的内容。</div>
        </hello>
    </body>
    <script src="framework/angular-1.3.0.14/angular.js"></script>
    <script src="transclude.js"></script>
</html>

js

var myModule = angular.module("MyModule", []);
myModule.directive("hello", function() {
    return {
        restrict:"AE",
        transclude:true,
        template:"<div>Hello everyone!<div ng-transclude></div></div>"
    } 
});

我们将transclude设置为true,然后在template中有这么一句:

<div ng-transclude></div>

这个将会确定原来嵌套在hello标签中的内容显示的地方。

所以最后显示的效果是
这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值