`

带你走近AngularJS - 基本功能介绍

阅读更多

带你走近AngularJS系列:

  1. 带你走近AngularJS - 基本功能介绍
  2. 带你走近AngularJS - 体验指令实例
  3. 带你走近AngularJS - 创建自定义指令

------------------------------------------------------------------------------------------------

AngularJS是Google推出的一款Web应用开发框架。它提供了一系列兼容性良好并且可扩展的服务,包括数据绑定、DOM操作、MVC设计模式和模块加载等。本文专注于AngularJS 指令的使用,在我们进入主题之前,我们将快速浏览AngularJS的基本用法。

AngularJS 不仅仅是一个类库,而是提供了一个完整的框架。它避免了您和多个类库交互,需要熟悉多套接口的繁琐工作。它由Google Chrome的开发人员设计,引领着下一代Web应用开发。也许我们5年或10年后不会使用AngularJS,但是它的设计精髓将会一直被沿用。

了解AngularJS的开发人员,你肯定会为AngularJS自定义指令(它的功能相当于.NET 平台下的自定义控件)功能感到兴奋。自定义指令允许你扩展HTML标签和特性。指令可以复用并且可以跨项目使用。

自定义指令已经得到了广泛的应用,其中值得一提的是-Wijmo控件集。它包含了近50款基于AngularJS 控件。Wijmo是用于创建桌面和移动Web应用程序的HTML5前端控件集。从交互式图表到强大的表格控件,Wijmo几乎包含了我们所需要的一切。可以从官网了解Wijmo的更多信息。所以,Wijmo是学习AngularJS很好的参考示例:AngularJS Directive Gallery

image

 

创建自定义指令是非常容易的。指令可以测试、维护并且在多个项目中复用。

使用AngularJS, 需要在HTML页面引用脚本文件,给HTML或Body标签添加ng-app 特性。下面是一个使用AngularJS的简单实例:

复制代码
<html>
  <head>
    <script src="http://code.angularjs.org/angular-1.0.1.js"></script>
  </head>
  <body ng-app ng-init="msg = '葡萄城控件团队博客'">
    <input ng-model="msg" />
    <p>{{msg}}</p>
  </body>
</html>
复制代码

 

当AngularJS 加载后,它会在文档中搜索ng-app 特性。这个标签通常被设置给项目的主要模块。一旦发现,Angular 就会对文档进行操作。

在这个例子中,ng-init 特性初始化了一个msg 变量“葡萄城控件团队博客”, ng-model 特性把它和input 控件进行了双向绑定(注意:大括号是绑定的标记)。AngularJS 会解析这个标记,随着input值改变实时更新msg 文本值。可以从链接查看效果:点击进入

image

 

AngularJS 模块

模块可以说是AngularJS 的根本。它包含配置、控制、过滤、工厂模式、指令及其它模块。

如果你熟悉.NET平台,但初步学习Angular。下面的表格是一个简要的对比,帮助你理解Angular中的角色扮演情况:

AngularJS

.NET

摘要

module

Assembly

应用开发模块

controller

ViewModel

控制器,启到不同层面间的组织作用

scope

DataContext

为视图提供绑定数据

filter

ValueConverter

数据传输到视图之前修改数据

directive

Component

可复用的UI元素,也可以理解为前端插件

factory, service

Utility classes

为其他模块元素提供服务

例如,下面的代码使用控制器、过滤器和指令创建了一个模块:

复制代码
// the main (app) module
var myApp = angular.module("myApp", []);

// add a controller
myApp.controller("myCtrl", function($scope) {
    $scope.msg = "grapecity team blog";
});

// add a filter
myApp.filter("myUpperFilter", function() {
    return function(input) {
        return input.toUpperCase();
    }
});

// add a directive
myApp.directive("myDctv", function() {
    return function(scope, element, attrs) {
        element.bind("mouseenter", function() {
            element.css("background", "yellow");
        });            
        element.bind("mouseleave", function() {
            element.css("background", "none");
        });            
    }
});
复制代码

 

上面示例中module 方法的第一个参数为模块的名称,第二个参数为它的依赖模块列表。我们创建了一个独立的模块,不依赖于其它模块。所以第二个参数为空数组(注意:即使它为空,我们也必须填写这个参数。否则,该方法回去检索之前的同名模块)。这部分我们将在后续的文章中详细阐述。

controller 构造函数获取$scope 对象,用于存储所有controller 暴露的接口和方法。scope 由Angular 传递到视图和指令层。在这个例子中, controller 添加了msg 属性给scope对象。一个应用模块可以包含多个controller,每个controller各司其职,控制一个或多个视图。

filter 构造函数返回一个方法用于更改input文本的显示方式。Angular 提供很多内置的filter,同时,你也可以添加自定义filter,操作方式Angular内置filter相同。在这个例子中,实现了小写到大写的转换。Filter不仅可以格式化文本值,还可以更改数组。AngularJS 内置的格式化Filter有number、date、currency、uppercase和lowercase。数组 filter有filter、orderBy和 limitTo。Filter需要设置参数,语法格式也是固定的: someValue |filterName:filterParameter1:filterParameter2....

directive 构造函数返回了一个方法,该方法用于传递一个元素,并依据scope中的参数对其进行修改。示例中我们绑定了mouseenter 和mouseleave 事件用于切换文本高亮显示。这是一个功能简单的指令,在后续的章节将展示如何创建一些复杂指令。

下面是使用模块构建的页面:

复制代码
<body ng-app="myApp" ng-controller="myCtrl">
    <input ng-model="msg" />
    <p my-dctv >
        {{msg | myUpperFilter }}
    </p>
</body>
复制代码

 

可以从链接查看效果:点击进入

image

 

注意应用中module、controller和filter 作为特性值应用。它们代表JavaScript 对象,因此名称是区分大小写的。指令的名称同样也是属性值,它作为HTML标签被解析,所以也是区分大小写的。但AngularJS 会自动转换这些特性为小写,例如“myDctv" 指令变成"my-dctv" (就像内置的指令ngApp, ngController, 和ngModel会转换成 "ng-app", "ng-controller", 和"ng-model"。

 

项目组织结构

使用AngularJS 可以创建大型Web项目。你可以把项目拆分为多个模块,把一个模块拆分为多个模块文件。同时,可以按照你的使用习惯组织这些文件。

列举一个典型的项目结构:

Root 
        default.html 
        styles 
               app.css 
        partials 
               home.html 
               product.html 
               store.html 
        scripts 
               app.js 
               controllers 
                       productCtrl.js 
                       storeCtrl.js 
               directives 
                       gridDctv.js 
                       chartDctv.js 
               filters 
                       formatFilter.js 
               services 
                       dataSvc.js 
               vendor 
                       angular.js 
                       angular.min.js

假设如果你仅希望项目中使用一个模块,你可以如此定义:

// app.js

angular.module("appModule", []);

 

如果希望在模块中添加元素,你可以通过名称调用模块向其中添加。例如: formatFilter.js 文件包含以下元素:

复制代码
// formatFilter.js
// 通过名称获取模块
var app = angular.module("appModule");

// 向模块中添加filter
app.filter("formatFilter", function() {
  return function(input, format) {
    return Globalize.format(input, format);
  }
}})
复制代码

如果你的应用包含多个模块,注意在添加模块时添加其它模块的引用。例如,一个应用包含三个模块app、controls、和data :

复制代码
// app.js (名称为app的模块依赖于controls和data模块)
angular.module("app", [ "controls", "data"])

// controls.js (controls 模块依赖于data 模块)
angular.module("controls", [ "data" ])

// data.js (data 模块没有依赖项,数组为空)
angular.module("data", [])
复制代码

应用的主页面中需要声明ng-app 指令, AngularJS 会自动添加需要的引用:

<html ng-app="app">
...
</html>

进行以上声明后,你就可以在所有的页面中使用其它三个模块声明的元素了。

这篇文章中我们了解了AngularJS的基本使用方法及结构。在下一个章节中,我们将阐述基本的指令概念,同时,会创建一些实例来帮助你加深指令作用的理解。

 

本文来源于:http://www.cnblogs.com/powertoolsteam/p/angularjs-introdection.html

分享到:
评论

相关推荐

    前端项目-angularjs-dropdown-multiselect.zip

    总结起来,"angularjs-dropdown-multiselect"是AngularJS生态中的一个强大工具,它不仅提供了下拉多选框的基本功能,还支持高级特性,能够帮助开发者快速构建出功能丰富的用户界面。在实际项目中,通过合理利用其...

    angularjs-pdf-master 在线预览

    在AngularJS框架中,实现移动端PDF文档的在线预览是一项重要的功能,特别是在移动设备日益普及的今天。"angularjs-pdf-master"项目就是针对这一需求提供的一种解决方案。该项目使用了AngularJS和PDF.js库,旨在为...

    前端项目-myforce-angularjs-dropdown-multiselect.zip

    在本文中,我们将深入探讨基于AngularJS的"myforce-angularjs-dropdown-multiselect"前端项目,这是一个功能丰富的下拉多选框指令。这个项目为开发者提供了一种高效且灵活的方式来实现用户界面中的多选下拉菜单,它...

    Clip-Two AngularJs-Admin

    【AngularJS-Admin:一个基于AngularJS的后台管理系统框架】 AngularJS,由Google维护的JavaScript框架,被广泛用于构建交互式、动态的Web应用程序。它以其数据绑定和依赖注入两大特性,大大简化了前端开发流程。...

    AngularJS-SPA-Template-master.zip_Angularjs-master_angularjs_asp

    AngularJS是Google维护的一个JavaScript框架,主要用于构建前端动态网页应用,而ASP.NET MVC则是微软提供的一个后端开发框架,用于构建可伸缩的、高性能的Web应用程序。 **AngularJS** AngularJS是MVC(模型-视图-...

    angularjs-form-builder, 使用AngularJS编写的简单窗体生成器应用程序.zip

    angularjs-form-builder, 使用AngularJS编写的简单窗体生成器应用程序 angularjs-form-builder用AngularJS编写的简单表单生成器应用程序。 它使用自定义指令。有关项目和功能的完整概述,请参见 ...

    前端项目-angularjs-color-picker.zip

    "前端项目-angularjs-color-picker" 是一个专门为 AngularJS 框架设计的颜色选择器指令,它允许开发者在 AngularJS 应用中集成色彩选择功能,提供用户友好的交互体验。 **AngularJS 简介** AngularJS 是一个由 ...

    前端项目-angularjs-slider.zip

    **前端项目-AngularJS ...通过以上步骤,你就可以在你的AngularJS项目中轻松集成并自定义AngularJS Slider,实现功能强大的滑动条组件。这款组件不仅简化了前端开发工作,还提升了用户体验,特别是在移动设备上的表现。

    angularjs-datetime-picker嘻嘻嘻.rar

    它不仅提供了基本的日期和时间选择功能,还允许开发者通过自定义样式和行为来适应各种复杂的项目需求。通过深入学习和实践,你将能够熟练掌握这个插件,为你的AngularJS应用带来更优质的用户体验。

    AngularJS--angular-phonecat

    总的来说,"AngularJS--angular-phonecat"是一个适合初学者的实践项目,通过它你可以深入理解AngularJS的基本构造和工作方式。尽管没有测试部分,但你可以在完成项目后自行添加,以提升项目的质量和自己的技能水平。...

    angularjs-datetime-picker.rar

    在本文中,我们将深入探讨AngularJS中的一个非常实用的日期时间选择器插件——"angularjs-datetime-picker"。这个插件为AngularJS应用程序提供了一种直观、易用的方式来处理日期和时间输入,大大简化了前端开发过程...

    前端项目-angularjs-ie8-build.zip

    AngularJS 1.3引入了许多改进和新特性,如$animate模块的增强、ngRepeat性能提升、以及Promise API的改进。然而,这些新特性在旧版浏览器如IE8中可能无法正常工作,因为它们不支持某些现代JavaScript语法和功能。 ...

    AngularJs-UI, AngularJs Pagination Angularjs分页 -- Want to be the best pagination..zip

    AngularJs-UI, AngularJs Pagination Angularjs分页 -- Want to be the best pagination.

    AngularJS-Batarang

    AngularJS-Batarang是chrome浏览器插件,上不了谷歌商店的可以看这.

    angularjs-datetime-picker

    这个组件在AngularJS应用中尤其有用,因为它能够无缝集成到Angular的数据绑定和指令系统中,提供动态和可定制的日期时间输入功能。 AngularJS是一个强大的JavaScript框架,由Google维护,它引入了MVC(模型-视图-...

    AngularJS-FlowChart, 可视化和编辑流程图的示例/模板WebUI控件.zip

    AngularJS-FlowChart, 可视化和编辑流程图的示例/模板WebUI控件 ...虽然这不是完全通用的,但是如果你需要使用SVG流程图并且愿意使用 AngularJS,那么它将是一个很好的基础。代码项目文章http://www.codeprojec

    angularjs-style-guide-github

    本知识点将详细介绍一个在GitHub上广泛流传的AngularJS风格指南——mgechev/angularjs-style-guide的内容。 ### 标题解读: “angularjs-style-guide-github”指的是这个风格指南的来源,即位于GitHub上的AngularJS...

    angularjs-eclipse.zip

    此时,你可以新建或打开一个AngularJS项目,Eclipse会自动识别并启用AngularJS插件的相关功能。 总的来说,虽然直接通过Eclipse MarketPlace下载插件更为便捷,但在网络不稳定或特定情况下,手动安装插件同样可靠。...

    angularJS-bs-switch

    `angularJS-bs-switch` 是一个结合了 AngularJS 和 Bootstrap 的库,专门用于创建这种功能丰富的开关按钮。AngularJS 提供了强大的数据绑定和指令系统,而 Bootstrap 则提供了美观的样式和布局,两者结合使得开发...

    angularjs-google-places, Google位置API的angular.js 包装器.zip

    angularjs-google-places, Google位置API的angular.js 包装器 AngularJS-Google-PlacesGoogle位置API的angular.js 包装器 Bower这里模块可以作为 Bower 软件包使用,使用以下命令安装:bower install angularjs-goog

Global site tag (gtag.js) - Google Analytics