首页 课程 师资 教程 报名

Angularjs自定义指令的创建

  • 2022-05-23 09:14:53
  • 451次 星辉

为什么使用 AngularJS 命令?

使用过 AngularJS 的人应该对它的命令最感兴趣。目前,只有 AngularJS 支持自定义命令,AngularJS 是唯一提供可重用 Java Web 框架

目前,许多 JavaScript 产品都为 Web 开发人员提供了插件。例如,Bootstrap 是一个流行的前端开发工具包,它提供样式和 JavaScript 插件。在Booostrap 中使用boins 时,开发者必须切换到JavaScript 模式编写jQuery 代码来激活ins。jQuery代码虽然容易编写,但必须与HTML同步,这是一个繁琐且容易出错的过程。

AngularJS 主页显示了一个在 Bootstrap 中实现 Tab 功能的简单示例。可以很方便的在页面上添加Tab功能,使用就像ul标签一样简单。HTML 代码如下:

   BootStrap 选项卡组件           
          这是第一个选项卡的内容。              
          这是第二个选项卡的内容。     

JavaScript 代码如下:

angular.module('组件',[])。指令('tabs',function(){return {限制:'E',transclude:true,范围:{},控制器:[“$scope”,函数($scope){var panes = $scope.panes = [ ]; $scope.select = function(pane) { angular.forEach(panes, function(pane) { pane.selected = false; }); pane.selected = true; } this.addPane = function(pane) { if ( panes.length == 0) $scope.select(pane); panes.push(pane); } }],模板:'' + '    
  '+'    
'+ '{{pane.title}}' + '
'+' 
' + '' + '', 替换: true }; })。指令('窗格',函数(){返回{要求:'^tabs',限制:'E',transclude:true,范围:{标题:'@'},链接:函数(范围,元素,attrs,tabsCtrl ) { tabsCtrl.addPane(scope); }, 模板: '' + '', 替换: true }; })

如您所见,除了有 And Tag 之外,该页面与常规 HTML 页面没有什么不同。HTML 开发人员不需要编写任何代码。当然,吃螃蟹的第一人总是需要创建命令进行分享,但目前 Tabs 命令很常见,可以在任何地方复用(比如 BootStrap、jQueryUI、Wijmo,还有一些知名的前端插件)。

由于它的易用性和易写性,许多用户已经开始使用 AngularJS 编写命令。比如AngularJS开发团队已经实现了一系列命令——UI Bootstrap来替代基于AngularJS的Bootstrap;知名的ComponentOne控件厂商也基于AngularJS创建了Wijmo;我们还可以在 GitHub 上找到一些公共指令数据库:jQueryUI 小部件。

有了 AngularJS,你认为你已经站在了巨人的肩膀上吗?但不要高兴得太早。如果我们已经有这么多命令可以使用,我们为什么要学习 AngularJS,为什么要学习自定义命令?

比如你可能有特殊要求:如果你在财务公司工作,你需要创建一个财务表格,以表格的形式展示数据,具有绑定、编辑、校验、同步数据到服务器的功能. 表单插件很常见,但不清楚它们能否满足这些特定需求。因此,您必须根据您的实际业务需求创建自定义命令。

Offshore Investment Summary

这就是本文的目的。接下来我们将讨论如何创建 AngularJS 命令。

创建自定义 AngularJS 命令

本文开头的自定义命令非常简单。它只实现同步功能。通用命令包括更多元素:

// 创建命令模块(或检索现有模块) var m = angular. 模块(“我的应用程序”);// 创建“my-dir”命令 myApp. directive ("myDir", function () {return {restrict: "E", // 指令是一个元素(不是属性) scope :{// 设置指令的作用域名称: "@", // name值传递(字符串,单向绑定)数量:“=”,//数量引用传递(双向绑定)保存:“&”//保存操作},模板://替换HTML(使用范围内的变量)“ " + "{name }}:"+"Save"+" ", Replace: true, // 使用模板替换原标签 transclude: false, // 不复制原HTML内容控制器: [" $ scope ", function ($ scope) {... }], Link: function (scope, element,

请注意,此自定义指令遵循格式:前缀“my”,类似于命名空间。因此,如果您在应用程序中引用多个模块命令,您可以轻松确定前缀的定义。这不是硬性要求,但可以带来很多便利。

该命令的构造函数返回带有属性的 JavaScript 对象。这些内容在 AngularJS 主页上都有清楚的描述。我对一些属性的理解如下:

Restrict:表示命令在 HTML 中的应用形式。备份选项包括“A”、“E”和“C”、“M”、属性、元素、类和注释(默认值:“”)。我们将更多地关注属性——如何创建 UI 元素。范围:创建指令的范围。范围作为指令中的属性标签传递。范围是创建可重用命令的必要条件。每个命令(无论嵌套命令的哪一层)都有一个唯一的作用域,并且不依赖于父作用域。范围对象定义名称和类型变量。前面的示例创建了三个范围变量。名称:“@”(传值,单向绑定):

“@”表示变量是值传递。该命令检索从父范围传递的字符串中的值。命令可以使用该值但不能修改。它是最常见的变量。数量:“=”(引用,双向绑定)

“=”表示该变量是通过引用传递的。检索主范围中的参考值的命令。值可以是任何类型,包括复合对象和数组。该命令可以更改父 Scope 中的值。因此,当 Command 需要修改父 Scope 中的值时,需要该类型。保存:“&”(表达式)

'&' 符号表示该变量是在父 Scope 中启用的表达式。它允许命令执行比修改值更高级的操作。模板:替换原模板中标记的字符串。replace 函数用新值替换所有旧元素。请注意模板如何使用 Scope 中定义的变量。这允许您创建宏样式的命令,而无需编写任何额外的代码。Replace:表示是替换原标签中的值还是追加原标签中的值。默认值为假。保留原始标签。Transclude:表示自定义Command是否复制原始标签中的内容。例如,前面的“tab”命令将 transclude 设置为 true,因为 tab 元素包含其他 HTML 元素。“日期输入” 命令在初始化期间必须为空。因此,将 transclude 设置为 false。链接:此方法在命令中起着重要作用。它执行 DOM 操作并注册事件侦听器。链接方法包括以下参数: scope:Scope 命令的引用。范围变量在初始化期间未定义。链接方法注册监视值更改事件。元素:包含命令的 DOM 元素的引用。link 方法一般用于通过 jQuery 操作实例(如果不加载 jQuery 也可以使用 Angular 的 jqLit​​e)。控制器:与嵌套命令一起使用。

注意:调用link方法时,通过值(“@”)传递的作用域变量不会被初始化,会在指令生命周期的另一个时间点被初始化,如果需要监听这个事件,你可以使用范围。$ 观看方法。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交