概述
var
app = angular.module(
'myapp'
, []);
app.directive(
'helloWorld'
,
function
() {
return
{
restrict:
'AE'
,
replace:
'true'
,
template:
'<h3>Hello World!!</h3>'
};
});
<
hello-world
/>
//OR
<
hello:world
/>
<
div
hello-world></
div
>
//OR
<
div
hello:world/>
<div data-hello-world></div>
//OR
<div x-hello-world></div>
-
restrict – 这个属性用来指定指令在HTML中如何使用(还记得之前说的,指令的四种表示方式吗)。在上面的例子中,我们使用了 ‘AE’。所以这个指令可以被当作新的HTML元素或者属性来使用。如果要允许指令被当作class来使用,我们将 restrict 设置成 ‘AEC’。
-
template – 这个属性规定了指令被Angular编译和链接(link)后生成的HTML标记。这个属性值不一定要是简单的字符串。template 可以非常复杂,而且经常包含其他的指令,以及表达式({{ }})等。更多的情况下你可能会见到 templateUrl, 而不是 template。所以,理想情况下,你应该将模板放到一个特定的HTML文件中,然后将 templateUrl 属性指向它。
-
replace – 这个属性指明生成的HTML内容是否会替换掉定义此指令的HTML元素。在我们的例子中,我们用 <hello-world></hello-world>的方式使用我们的指令,并且将 replace 设置成 true。所以,在指令被编译之后,生成的模板内容替换掉了 <hello-world></hello-world>。最终的输出是 <h3>Hello World!!</h3>。如果你将 replace 设置成 false,也就是默认值,那么生成的模板会被插入到定义指令的元素中。
Link函数和Scope
<
body
ng-controller
=
"MainCtrl"
>
<
input
type
=
"text"
ng-model
=
"color"
placeholder
=
"Enter a color"
/>
<
hello-world
/>
</
body
>
app.directive(
'helloWorld'
,
function
() {
return
{
restrict:
'AE'
,
replace:
true
,
template:
'<p style="background-color:{{color}}">Hello World'
,
link:
function
(scope, elem, attrs) {
elem.bind(
'click'
,
function
() {
elem.css(
'background-color'
,
'white'
);
scope.$apply(
function
() {
scope.color =
"white"
;
});
});
elem.bind(
'mouseover'
,
function
() {
elem.css(
'cursor'
,
'pointer'
);
});
}
};
});
-
scope – 指令的scope。在我们的例子中,指令的scope就是父controller的scope。
-
elem – 指令的jQLite(jQuery的子集)包装DOM元素。如果你在引入AngularJS之前引入了jQuery,那么这个元素就是jQuery元素,而不是jQLite元素。由于这个元素已经被jQuery/jQLite包装了,所以我们就在进行DOM操作的时候就不需要再使用 $()来进行包装。
-
attr – 一个包含了指令所在元素的属性的标准化的参数对象。举个例子,你给一个HTML元素添加了一些属性:,那么可以在 link 函数中通过 attrs.someAttribute 来使用它。
原文链接: sitepoint 翻译: 伯乐在线 - 陈 鑫伟
译文链接: http://blog.jobbole.com/62249/
相关推荐
#### 一、AngularJS指令简介 AngularJS 是一个流行的 JavaScript 框架,用于构建动态的 Web 应用程序。AngularJS 指令是框架的一个核心功能,它允许开发者通过扩展 HTML 的语法来创建自定义的行为和组件。本书...
本知识点将详细介绍一个在GitHub上广泛流传的AngularJS风格指南——mgechev/angularjs-style-guide的内容。 ### 标题解读: “angularjs-style-guide-github”指的是这个风格指南的来源,即位于GitHub上的AngularJS...
### AngularJS前端框架知识点详解 #### 一、AngularJS简介 AngularJS是一个开源的JavaScript框架,由Google维护和支持。...AngularJS的核心特性包括数据...继续深入探索和实践,你会逐渐成为一名优秀的AngularJS开发者。
**AngularJS 编写优美JavaScript代码指南** 在前端开发领域,AngularJS 是一款非常流行的JavaScript框架,它提供了丰富的功能和工具来构建复杂的应用程序。本文将聚焦于如何使用AngularJS编写更加优雅、易于维护的...
【AngularJS 学习指南】 AngularJS 是一个强大的前端JavaScript框架,由Google维护,用于构建富互联网应用程序(RIA)。它采用MVC(Model-View-Controller)架构模式,简化了前端开发,使得开发者能够更高效地创建...
《AngularJS UI Development》这本书是关于使用AngularJS框架进行用户界面开发的专业指南,随书附带的代码资源库名为"AngularUI-Code-master"。这个压缩包中的代码旨在帮助读者深入理解并实践AngularJS在构建现代Web...
AngularJS指令是扩展HTML的一种方式,可以定义新的行为或增强现有元素。这里的模块专门设计用来方便地在AngularJS应用中使用Google图表。 **标签解析** "前端项目"标签指示这是一个关于Web前端开发的工作,重点...
【标题】"blackjack-in-angularjs:AngularJs 中的一个简单实验"揭示了这个项目的核心——在AngularJS框架中实现一个Blackjack(21点)游戏。AngularJS是Google推出的一款强大的前端开发框架,用于构建单页应用(SPA...
在实际项目中,为了实现控件的重用,我们可以创建一个AngularJS模块,包含一个编辑器指令。这个指令可以接受配置参数,如是否开启预览模式,或者自定义工具栏按钮。然后,在需要使用编辑器的任何地方,只需导入这个...
- **指令(Directive)**: 是AngularJS中的一个特殊属性,用于扩展HTML的功能。指令可以改变DOM结构、绑定事件监听器等。 - **路由(Routing)**: 用于管理单页面应用中的不同视图。通过定义路由规则,可以根据URL的变化...
- **代码风格**:遵循AngularJS官方的编码风格指南,如使用`$scope`的最佳实践,避免全局变量等。 - **文档注释**:为每个组件添加清晰的文档注释,方便其他开发者理解和使用。 5. **持续集成和自动化工具**: ...
总的来说,这个“前端项目-angular-ui.zip”提供了一个使用AngularJS和Angular UI构建的前端项目实例,对于学习和实践AngularJS的UI开发具有参考价值。通过研究这个项目,开发者可以深入了解AngularJS的架构和组件化...
5. `directives.js` - 指令文件,定义了自定义的AngularJS指令,用于增强HTML元素的功能。 6. `styles.css/less/sass` - 样式文件,负责应用的视觉样式。 7. `templates` 文件夹 - 可能包含了一些预渲染的HTML模板,...
总之,“用Typescript烹饪angular.js”是一个关于如何在保持项目运行的同时,逐步提升代码质量和可维护性的实践指南。它帮助开发者理解如何在现有AngularJS项目中引入强类型和现代化的开发实践,为项目的长远发展...
- `ng generate directive my-directive`:生成新的指令。 - `ng generate pipe my-pipe`:生成新的管道。 - `ng generate service my-service`:生成新的服务。 - `ng generate route my-route`:生成新的路由。 - ...