菜鸟笔记-AngularJS 5月28日学习

 
ng-model 指令根据表单域的状态添加/移除以下类:
ng-valid: 验证通过
ng-invalid: 验证失败
ng-valid-[key]: 由$setValidity添加的所有验证通过的值
ng-invalid-[key]: 由$setValidity添加的所有验证失败的值
ng-pristine: 控件为初始状态
ng-dirty: 控件输入值已变更
ng-touched: 控件已失去焦点
ng-untouched: 控件未失去焦点
ng-pending: 任何为满足$asyncValidators的情况


Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上
当你在 AngularJS 创建控制器时,你可以将 $scope 对象当作一个参数传递:


当在控制器中添加 $scope 对象时,视图 (HTML) 可以获取了这些属性。
视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{carname}}。


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


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


当在控制器中添加 $scope 对象时,视图 (HTML) 可以获取了这些属性。
视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{carname}}。


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


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


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




指令根据表单域的状态添加/移除以下类:
<style>
input.ng-invalid {
    background-color: lightblue;
}
</style>
<body>


<form ng-app="" name="myForm">
    输入你的名字:
    <input name="myAddress" ng-model="text" required>
</form>
文本域添加了 required 属性,该值是必须的,如果为空则是不合法的。




修改了视图,模型和控制器也会相应更新:
<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 = "Runoob";
    $scope.sayHello = function() {
        $scope.greeting = 'Hello ' + $scope.name + '!';
    };
});
</script>


ng-repeat,$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 = ["Emil", "Tobias", "Linus"];
    $rootScope.lastname = "Refsnes";
});
</script>

(一)控制器

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

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

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

myCtrl 函数是一个 JavaScript 函数。

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

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

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

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

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

重点

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

<div ng-app="myApp"ng-controller="personCtrl">

名: <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('personCtrl',function($scope) {

   $scope.firstName = "John";

   $scope.lastName = "Doe";

   $scope.fullName = function() {

       return $scope.firstName + " " + $scope.lastName;

    }

});

在大型的应用程序中,通常是把控制器存储在外部文件中。

只需要把 <script> 标签中的代码复制到名为 personController.js 的外部文件中即可:

二(过滤器)

过滤器可以使用一个管道字符(|)添加到表达式和指令中。

AngularJS 过滤器可用于转换数据:

过滤器

描述

currency

格式化数字为货币格式。

filter

从数组项中选择一个子集。

lowercase

格式化字符串为小写。

orderBy

根据某个表达式排列数组。

uppercase

格式化字符串为大写。

过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中。.

 

<divng-app="myApp"ng-controller="personCtrl">

 

        <!--<p>姓名为{{firstName|uppercase }}</p>

        <p>姓名为{{firstName|lowercase }}</p>-->

        <inputtype="number"ng-model="quantity">

        <inputtype="number"ng-model="price">

        <p>总价 = {{ (quantity*price)|currency }}</p>

        <p>循环对象:</p>

        <inputtype="number"ng-model="test">

        <ul>

            <ling-repeat="xinnames|filter:test|orderBy:'country'">

                {{ (x.name|uppercase)+','+(x.country|lowercase)  }}

            </li>

        </ul>

        自定义: {{ msg|reverse }}

</div>

 <script>

        var app = angular.module('myApp', []);

        app.controller('personCtrl', function ($scope) {        

            $scope.names = [

                { name: 'Janitest', country: 'Norway' },

                { name: 'Hege', country: 'Sweden' },

                { name: 'Kai', country: 'Denmark' }

            ];

            $scope.msg = "Runoob"

        });

 

        app.filter('reverse', function () { //可以注入依赖

            returnfunction (text) {

                return text.split("").reverse().join("");

            }

        });

</script>

 

 

 















 

猜你喜欢

转载自blog.csdn.net/qq_25744257/article/details/80487846