AngularJS 初步了解

此Angular版本为Angular 1的版本。

AngularJS 扩展了 HTML

先上个例子

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>anjular test</title>
    <script src="/js/lib/angular.min.js"></script>
    <script src="/js/app/angular126.js"></script>
</head>
<body>
<div ng-app="">
    <label>Name:</label>
    <input type="text" ng-model="username">
    <hr>  
    <h1>hello {{username}}</h1> 
</div>
</body>
</html>

ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的”所有者”。
ng-model 指令把输入域的值绑定到应用程序变量 name。
ng-bind 指令把应用程序变量 name 绑定到某个段落的 innerHTML。

AnjularJS指令

AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。

ng-app 指令定义一个 AngularJS 应用程序的根元素;在网页加载完毕后会自动引导(初始化)应用程序。
ng-model 指令把元素值(比如输入域的值)绑定到应用程序。
它有以下功能:
– 为应用程序数据提供类型验证(number、email、required)。
– 为应用程序数据提供状态(invalid、dirty、touched、error)。
– 为 HTML 元素提供 CSS 类。
– 绑定 HTML 元素到 HTML 表单。
ng-bind 指令把应用程序数据绑定到 HTML 视图。
ng-init 指令初始化AnjularJS应用程序变量。

<div data-ng-app="" data-ng-init="username='admin'">
    <p>姓名为:<span data-ng-bind="username"></span></p>
</div>

数据绑定

AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。
下面例子中,两个文本域是通过两个 ng-model 指令同步的:

<div ng-app="" ng-init="quantity=1;price=5">
<h2>价格计算器</h2>
数量: <input type="number" ng-model="quantity">
价格: <input type="number" ng-model="price">
<p><b>总价:</b> {{ quantity * price }}</p>
</div>

重复HTML元素

no-repeat来重复一个HTML元素

<div ng-app="" ng-init="names=['Killy', 'James', 'Ed']">
    <ul>
        <li ng-repeat="x in names">
            {{x}}
        </li>
    </ul>
</div>

创建自定义指令

使用.directive 函数来添加自定义的指令。
要调用自定义指令,HTML 元素上需要添加自定义指令名。
使用驼峰法来命名一个指令, myDirective, 但在使用它时需要以 – 分割,my-directive:

<my-directive></my-directive>
<script>
var app = angular.module('myApp', []);
app.directive('myDirective', function() {
    return {
        tpl: "<h1>自定义指令!</h1>"
    }
})
</script>

可以通过元素名属性类名注释来调用指令;
同时可以通过添加restrict属性,设置相应的值,来规定以某种方式使用(元素:E、属性:A、类名C、注释M)。

<my-directive></my-directive>
<div my-directive></div>
<div class="my-directive"></div>
<!-- my-directive -->

restrict 默认值为 EA, 即可以通过元素名和属性名来调用指令。

var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
    return {
        restrict : "A",
        template : "<h1>自定义指令!</h1>"
    };
});

AngularJS 表达式

AngularJS 表达式写在双大括号内:{{ expression }}
AngularJS 表达式把数据绑定到 HTML,这与 ng-bind 指令有异曲同工之妙。
AngularJS 将在表达式书写的位置”输出”数据。
AngularJS 表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。

AngularJS 应用

AngularJS 模块(Module) 定义了 AngularJS 应用。
AngularJS 控制器(Controller) 用于控制 AngularJS 应用。
ng-app指令定义了应用, ng-controller 定义了控制器。

<div ng-app="myApp" ng-controller="myCtrl">
    姓:<input type="text" ng-model="firstName"> 
    名:<input type="text" ng-model="lastName">
</div>
//AngularJS 模块
var app = angular.module('myApp', []);

//AngularJS 控制器
app.controller('myCtrl', function($scope) {
    $scope.firstName = 'Dean';
    $scope.lastName = 'john';
});

发表评论

电子邮件地址不会被公开。 必填项已用*标注