AngularJS双向绑定,手动实施观察
实现这样的一个需求:页面中某个地方显示某个文本框的值经过计算得到的结果,而且是文本框值每次变化显示的计算结果也跟着动态变化。
在controller中可以声明一个对象,它的一个字段用来存储初始值:
$scope.funding = {startingEstimate:0};
以上,声明了一个funding对象,它的startingEstimate字段用来存储初始值,初始值这里是0.
在controller中还应该声明一个函数,用来把根据初始值计算得到的结果赋值给funding对象的另外一个字段。
$scope.computeNeeded = function(){
$scope.funding.needed = $scope.funding.startingEstimate * 10;
};
以上,声明了computeNeeded函数,它把funding对象startingEstimate值进过计算后的结果赋值给了funding对象的另外一个字段needed。
好了,页面中的input需要和funding对象的startingEstimate双向绑定起来,用ng-model;input中每次值变化需要调用computeNeeded,用ng-change:
初始值:<input type="text" ng-model="funding.startingEstimate" ng-change="computeNeeded()">
至于显示结果,只管向funding对象的needed字段要就好了:
计算值:{{funding.needed}}
可是,还有一点小问题:现在,只有当input中的值发生变化的时候才会触发computeNeeded()方法,我们希望在页面加载的时候就执行computedNeeded方法。
为此,AngularJS为我们准备了$scope.$watch(被观察对象,执行的动作),可以把funding对象的startingEstimate字段列为被观察对象,startingEstimate字段的每次变化,都执行computedNeeded()这个动作,包括给startingEstimate字段初始赋值的时候。
$scope.$watch('funding.startingEstimate', $scope.computeNeeded);
完整代码如下:
<!doctype html><html ng-app="myApp"><head><meta charset="UTF-8"><title>Untitled Document</title><script src="angular.min.js"></script><script>var myApp = angular.module("myApp",[]);myApp.controller("MyController",['$scope',function($scope){$scope.funding = {startingEstimate:0};$scope.computeNeeded = function(){$scope.funding.needed = $scope.funding.startingEstimate * 10;};$scope.$watch('funding.startingEstimate', $scope.computeNeeded);$scope.finish = function(){alert("done");};}]);</script></head><body ng-controller="MyController"><form ng-controller="MyController" ng-submit="finish()">初始值:<input type="text" ng-model="funding.startingEstimate" ng-change="computeNeeded()">计算值:{{funding.needed}}<input type="submit" value="提交"></form></body></html>
总结:
● 双向绑定:ng-model
● 文本框值变化事件:ng-change
● 对某个对象实施观察:$scope.$watch(被观察对象,执行的动作)
● 表单提交:ng-submit
● 其它事件:ng-click, ng-dblclick
参考资料:<<用AngularJS开发下一代Web应用>>
AngularJS双向绑定,手动实施观察的更多相关文章
- Angularjs 双向绑定机制解析
文章转自:http://www.2cto.com/kf/201408/327594.html AngularJs 的元素与模型双向绑定依赖于循环检测它们之间的值,这种做法叫做脏检测,这几天研究了一下其 ...
- angularJS双向绑定和依赖反转
一.双向绑定: UI<-->数据 数据->UI (数据改变UI跟着变) UI->数据 (UI改变数据跟着变) 数据改变->UI改变原理: 监听数据是否改变,如果改变更新U ...
- AngularJs双向绑定详解
双向绑定的三个重要方法: $scope.$apply() $scope.$digest() $scope.$watch() 一.$scope.$watch() 我理解的$watch就是将对某个数据的监 ...
- AngularJs双向绑定
模型数据(Data) 模型是从AngularJS作用域对象的属性引申的.模型中的数据可能是Javascript对象.数组或基本类型,这都不重要,重要的是,他们都属于AngularJS作用域对象. An ...
- AngularJS中数据双向绑定(two-way data-binding)
1.切换工作目录 git checkout step-4 #切换分支,切换到第4步 npm start #启动项目 2.代码 app/index.html Search: <input ng-m ...
- 深入学习AngularJS中数据的双向绑定机制
来自:http://www.jb51.net/article/80454.htm Angular JS (Angular.JS) 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持 ...
- 我的angularjs源码学习之旅3——脏检测与数据双向绑定
前言 为了后面描述方便,我们将保存模块的对象modules叫做模块缓存.我们跟踪的例子如下 <div ng-app="myApp" ng-controller='myCtrl ...
- Angular系列----AngularJS入门教程05:双向绑定(转载)
在这一步你会增加一个让用户控制手机列表显示顺序的特性.动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情. 请重置工作目录: git checkout -f ...
- angularjs bind与model配合双向绑定 表达式方法输出
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
随机推荐
- mysql学习------权限机制
MySQL服务器通过MySQL权限表来控制用户对数据库的访问,MySQL权限表存放在mysql数据库里,由mysql_install_db脚本初始化.这些MySQL权限表分别user,db,table ...
- 003_vim使用tip
vim 使用tip 编写python程序 自动插入头信息: #!/usr/bin/env python # coding=utf-8 输入.或按TAB键会触发代码补全功能 :w保存代码之后会自动检查代 ...
- (转载)mysql:设置mysql的远程访问
1.登陆Mysqlmysql -u root -p2.允许任何IP访问,其中密码为admingrant all privileges on *.* to root@"%" iden ...
- Python黑魔法
1. 赋值 In [1]: x = 1 ...: y = 21 ...: print x, y ...: ...: x, y = y, x ...: print x, y 1 21 21 1 2. 列 ...
- Nginx基本配置文件
Nginx基本配置文件 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. work ...
- 使用react中遇到的问题
引入antdesign中Carousel走马灯时遇到问题? Uncaught Error: Element ref was specified as a string (slick) but no o ...
- CAS单点登录流程
CAS的官方站点: https://apereo.github.io/cas/5.2.x/index.html 概念解读: The TGT (Ticket Granting Ticket), stor ...
- #JS 前端javascript规范文档
一.规范目的 为提高团队协作效率,便于前端后期优化维护,输出高质量的文档. 二.基本准则 符合web标准,结构表现行为分离,兼容性优良.页面性能方面,代码要求简洁明了有序, 尽可能的减小服务器负载,保 ...
- CSS3&HTML5各浏览器支持情况一览表
http://fmbip.com/ CSS3性质(CSS3 Properties) 平台 MAC WIN 浏览器 CHROME FIREFOX OPERA SAFARI CHROME FIREFOX ...
- day--14前端(HTML、CSS)
浏览器相当于客户端,浏览器访问服务端,收到消息之后里面断开,一次请求,一次响应,一次断开. Web框架本质 http://www.cnblogs.com/wupeiqi/articles ...