AngularJS 学习第一篇 表达式 指令 模型及作用域

一,AngularJs 指令

AngularJS 通过被称为 指令 的新属性来扩展 HTML。

AngularJS 通过内置的指令来为应用添加功能。

AngularJS 允许你自定义指令。

ng-app 指令

ng-app 指令定义了 AngularJS 应用程序的 根元素

ng-app 指令在网页加载完毕时会自动引导(自动初始化)应用程序。

<div ng-app="" ng-init="firstName='John'">

<p>在输入框中尝试输入:</p>
<p>姓名: <input type="text" ng-model="firstName"></p>
<p>你输入的为: {{ firstName }}</p>

</div>

ng-app 指令告诉 AngularJS,<div> 元素是 AngularJS 应用程序 的"所有者"。

ng-model 指令

ng-model 指令 绑定 HTML 元素 到应用程序数据。

ng-model 指令也可以:

  • 为应用程序数据提供类型验证(number、email、required)。
  • 为应用程序数据提供状态(invalid、dirty、touched、error)。
  • 为 HTML 元素提供 CSS 类。
  • 绑定 HTML 元素到 HTML 表单。
<div ng-app="myApp" ng-controller="myCtrl">
名字: <input ng-model="name">
</div>
​
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.name = "John Doe";
});
</script>

双向绑定

<div ng-app="myApp" ng-controller="myCtrl">
    名字: <input ng-model="name">
    <h1>你输入了: {{name}}</h1>
</div>

验证用户输入

    <form ng-app = "" name = "myform">
        Email:
        <input type="email" name = "myAddress" ng-model = "text">
        <span ng-show = "myform.myAddress.$error.email">不是一个合法的邮箱</span>
        <!-- 以上实例中,提示信息会在 ng-show 属性返回 true 的情况下显示。 -->
    </form>

ng-repeat 指令

ng-repeat 指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素

<div ng-app="" ng-init="names=[
{name:'Jani',country:'Norway'},
{name:'Hege',country:'Sweden'},
{name:'Kai',country:'Denmark'}]">
 
<p>循环对象:</p>
<ul>
  <li ng-repeat="x    in names">
    {{ x.name + ', ' + x.country }}
  </li>
</ul>
 
</div>

二,AngularJS Scope(作用域)

Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。

Scope 是一个对象,有可用的方法和属性。

Scope 可应用在视图和控制器上。

Scope 概述

AngularJS 应用组成如下:

  • View(视图), 即 HTML。
  • Model(模型), 当前视图中可用的数据。
  • Controller(控制器), 即 JavaScript 函数,可以添加或修改属性。

scope 是模型。

scope 是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。

如果你修改了视图,模型和控制器也会相应更新:

    <div ng-app = "myApp"  ng-controller = "myCtrl">
        <input ng-model = "name" >
        <h1>{{greeting}}</h1>
        <button ng-click = "sayHello()">点我</button>
    </div>
    <script>
        var app = angular.module("myApp",[]);
        app.controller("myCtrl",function($scope){
            $scope.name = "muzi";
            $scope.sayHello = function(){
                $scope.greeting = 'hello' + ' ' + $scope.name
            }   
            
        });

    </script>

Scope 作用范围

了解你当前使用的 scope 是非常重要的。

在以上两个实例中,只有一个作用域 scope,所以处理起来比较简单,但在大型项目中, HTML DOM 中有多个作用域,这时你就需要知道你使用的 scope 对应的作用域是哪一个。

当我们使用 ng-repeat 指令时,每个重复项都访问了当前的重复对象:

    <div ng-app = "myApp" ng-controller = "myCtrl">
        <ul>
            <li ng-repeat = 'x in name'>{{x}}</li>
        </ul>
    </div>
    <script>
        var app = angular.module("myApp",[]);
        app.controller("myCtrl",function($scope){
            $scope.name = ['l' ,'g','s'];
        })

根作用域

所有的应用都有一个 $rootScope,它可以作用在 ng-app 指令包含的所有 HTML 元素中。

$rootScope 可作用于整个应用中。是各个 controller 中 scope 的桥梁。用 rootscope 定义的值,可以在各个 controller 中使用。

创建控制器时,将 $rootScope 作为参数传递,可在应用中使用:

        <div ng-app = "myApp" ng-controller = "myCtrl">
            <h1>姓氏为{{lastname}}家族成员:</h1>
            <ul>
                <li ng-repeat = "x in names">{{x}} {{lastname}}</li>
            </ul>
        </div>
        <script>
            var app  = angular.module("myApp",[]);
            app.controller("myCtrl",function($scope,$rootScope){
                $scope.names = ["Tom","Jack","Jion"];
                $rootScope.lastname = "Refsn"
            })
        </script>
        <p>注意 $rootScope 在循环对象内外都可以访问。</p>

三,AngularJS 控制器

AngularJS 应用程序被控制器控制。

ng-controller 指令定义了应用程序控制器。

控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。

    <div ng-app = "myApp" ng-controller = "myCtrl">
        名:<input type="text" ng-model = "firstname"><br>
        姓:<input type="text" ng-model = "lastname"><br>
        <br>
        姓名:{{firstname + " " + lastname}}

    </div>
</body>
<script>
    var app = angular.module("myApp",[]);
    app.controller("myCtrl",function($scope){
        $scope.firstname = "John";
        $scope.lastname = "Doe";
    })
</script>

应用解析:

AngularJS 应用程序由 ng-app 定义。应用程序在 <div> 内运行。

ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。

myCtrl 函数是一个 JavaScript 函数。

AngularJS 使用$scope 对象来调用控制器。

在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。

控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。

控制器在作用域中创建了两个属性 (firstName 和 lastName)。

ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。

控制器方法

上面的实例演示了一个带有 lastName 和 firstName 这两个属性的控制器对象。

控制器也可以有方法(变量和函数)

    <div ng-app = "myApp" ng-controller = "myCtrl">
        名:<input type="text" ng-model = "firstname"><br>
        姓:<input type="text" ng-model = "lastname"><br>
        <br>
        姓名:{{fullname()}}
    </div>
    <script>
        var app = angular.module("myApp",[]);
        app.controller("myCtrl",function($scope){
            $scope.firstname = 'John';
            $scope.lastname = 'Doe';
            $scope.fullname = function(){
                return  $scope.firstname + " " + $scope.lastname
            }
        })
    </script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值