AngularJS笔记---数据绑定

一.数据绑定

1.简单绑定

下面实现了一个简单的加法运算的绑定,

A.ng-app:表示该div以内都在AngularJS的应用, 去掉ng-app="" 那么后面的绑定都将无效

B.ng-models :  用于数据绑定, 也就是两个input的里面输入的信息都会绑定到val1和val2变量里面。

C.{{ FiledName }}: 双括号也是用于数据的绑定.

<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript">
</script>
<head>
    <div ng-app="">
       <div >
            <input ng-model="val1" type="number" placeholder="input your number"> +
            <input ng-model="val2" type="number" placeholder="input your numer"> =
            <span>{{ val1+val2 || 0 }}</span>
        </div>
    </div>
</head>
<body>

</body>
</html>

2.  $scope的使用

上面有提到通过ng-model实现数据的绑定,其实所谓的数据绑定其实就是绑定到了$scope上.下面通过编写SumController方法实现了一个点击submit按钮就计算出两个整数之和.

<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript">

    function SumController($scope){
         $scope.addTwoNumber = function(){
             $scope.addNumber = $scope.val2+$scope.val1;
         };
     }

</script>
<head>
    <div ng-app="">
       <div ng-controller="SumController" >
            <input ng-model="val1" type="number" placeholder="input your number"> +
            <input ng-model="val2" type="number" placeholder="input your numer">
            <button ng-click="addTwoNumber()">Submit</button>
            <span>{{ addNumber||0 }}</span>
        </div>
    </div>
</head>
<body>
</body>
</html>

3.$apply()用法

上面有提到通过ng-model实现数据的绑定,其实所谓的数据绑定其实就是绑定到了$scope上.下面是一个简单的时钟程序,通过setInterval方法实现每过一秒更新clock值,在绑定中我们还是用到了apply方法.

A. setInterval 中调用updateClock()后会发现chrome的console中会每过一秒打印当前时间,可是界面没更新

B. setInterval 中调用$scope.$apply(updateClock)后会发现chrome的console会每过1秒答应一次当前时间,并且界面更新时间

C.为何为这样?其实是调用setInterval方法循环触发updateClock方法与我们上面的通过ng-click的机制不同. ng-click会自动$watch,监控数据变化从而更新界面。而原生JavaScript的setInterval中更改了数据无法监控到,所以要通过$apply来实现。

理解Angular中的$apply()以及$digest()

<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript">

   function ClockController($scope){

       var updateClock = function(){
             $scope.clock = new Date();             console.log($scope.clock); //数据观察
       }

       var clockInterval = setInterval(function(){

             // updateClock(); -- 不会更新
             $scope.$apply(updateClock);
       },1000);

       updateClock();
   }

</script>
<head>
    <div ng-app="">
       <div ng-controller="ClockController" >
            <h1>{{ clock }}</h1>
        </div>
    </div>
</head>
<body>
</body>
</html>

二. 模块化
             做过.net开发的都知道,在开发中我们会声明不同的命名空间和不同类,来实现代码的模块化管理,其实AngularJs同样也提供了类似的方法,我们可以通过ng-app和ng-contrller实现代码的模块化管理.

A.通过angular.module在后台注册一个模块,然后通过app.controller来添加contrller,这里的‘SumController‘和‘TimeController‘属于兄弟模块,两则之间的Scope绑定对象互不干扰.

B.一个html页面后台只能注册一个module,如果注册多个会报错.

<!DOCTYPE html>
<html>
<script src="angular.min.js"></script>
<script type="text/javascript">
     var app = angular.module(‘app‘,[]);
     app.controller(‘SumController‘,function($scope){
         $scope.addTwoNumber = function(){
             $scope.addNumber = $scope.val2+$scope.val1;
         };
     });

     app.controller(‘TimeController‘,function($scope){
         $scope.timeTwoNumber = function(){
             $scope.timeNumber = $scope.val2 * $scope.val1;
         };
     });

</script>
<head>
    <div ng-app="app">
       <div ng-controller="SumController" >
            <input ng-model="val1" type="number" placeholder="input your number"> +
            <input ng-model="val2" type="number" placeholder="input your numer">
            <button ng-click="addTwoNumber()">Submit</button>
            <span>{{ addNumber||0 }}</span>
        </div>
        <br/>
        <div ng-controller="TimeController">
            <input ng-model="val1" type="number" placeholder="input your number"> *
            <input ng-model="val2" type="number" placeholder="input your numer">
            <button ng-click="timeTwoNumber()">Submit</button>
            <span>{{ timeNumber||0 }}</span>
        </div>
    </div>
</head>
<body>
</body>
</html>
时间: 2024-12-12 15:46:44

AngularJS笔记---数据绑定的相关文章

用AngularJS实现数据绑定

用AngularJS实现数据绑定实在太方便了(DOM 操作全依赖AngularJS): <!DOCTYPE html> <html ng-app xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Simple app</title> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angul

AngularJS笔记

1,客户模板 angular中,模板和数据都会被发送到浏览器中,然后在客户端进行装配 2,MVC (1)MVC核心概念,把管理数据的代码(model).应用逻辑代码(controller).向用户展示数据的代码 (view)清晰地分离开 (2)Angular应用中: 试图就是Document ObjectModel 控制器就是Javascript类 模型数据则被储存在对象属性中 3,数据绑定 (1)数据绑定可自动将model和view间的数据同步 (2)Angular实现数据绑定的方式,可以让我

AngularJS笔记--自定义指令

在前端开发中, 我们会遇到很多地方都会用到同一种类型的控件.AngularJS提供了自定义指令功能,我们可以在指令里面定义特定的html模板.提供给前台html调用. 一. 指令的简单定义.  下面定义了一个简单的控件,点击后调转到博客园. Note: 1.命名方式:directive必须以小写字母开头,其中如果后面由大写字母,html调用的时候就要用 - 将单词分开. <html> <script src='angular.js'></script> <scri

AngularJS自学之路——初识AngularJS和数据绑定

AngularJS 是什么 AngularJS的官方文档是这样介绍它的.完全使用JavaScript编写的客户端技术.同其他历史悠久的Web技术(HTML.CSS和JavaScript)配合使用,使Web应用开发比以往更简单.更快捷. AngularJS主要用于构建单页面Web应用.它通过增加开发人员和常见Web应用开发任务之间的抽象级别,使构建交互式的现代Web应用变得更加简单. AngularJS的开发团队将其描述为一种构建动态Web应用的结构化框架. AngularJS使开发Web应用变得

AngularJS 的数据绑定

单向绑定(ng-bind) 和 双向绑定(ng-model) 的区别 ng-bind 单向数据绑定($scope -> view),用于数据显示,简写形式是 {{}}. 1 <span ng-bind="val"></span> 两者的区别在于页面没有加载完毕 {{val}} 会直接显示到页面,直到 Angular 渲染该绑定数据(这种行为有可能将 {{val}} 让用户看到):而 ng-bind 则是在 Angular 渲染完毕后将数据显示. ng-mo

AngularJs——双向数据绑定示例

最近在做Hybird App,接触到了AngularJs,感觉用起来蛮爽的,今天share下AngularJs的核心功能之一:双向数据绑定. 我们在页面中加入一个表单: <!DOCTYPE html> <html ng-app="userInfoModule"> <head> <meta name="content-type" content="text/html; charset=UTF-8">

AngularJS 笔记1

2017-03-23 本文更新链接: http://www.cnblogs.com/daysme 什么是 angularjs 2009年有两个外国人创建,后由谷歌收购并开源. 他的特点有MVC.模块化.双向数据绑定.语义化标签.依赖注入等. AngularJS主要考虑的是构建CRUD应用,90%的应用都是CRUD应用,游戏,图形界面编辑器,这种DOM操作很频繁也很复杂的应用不合适他做. CRUD(增加Create.读取Read.更新Update.删除Delete) 安装 引入 angular.j

AngularJS笔记---注册服务

在前面的笔记中,了解到AngularJS的后台控制可以在Controller里面实现. 可是如果所有的逻辑代码都写到Controller会显得该Controller过于臃肿. 不方便维护, AngularJS提供了一个可以依赖注入的方法.我们可以将逻辑处理封装到Service中,需要调用只需要引入对应的Service即可. Angular 提供了3种方法来创建并注册我们自己的 service. 1.Factory 2.Service 3.Provider 一. Factory: 1. 下面构建了

Angularjs[2] - 数据绑定

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body ng-app> <input type="text" ng-model="name" value=""> <!