angularJS之$watch的一个小介绍

现在最近公司项目使用angularJS进行开发;以前也接触过但是不多,趁着现在熟悉回来。

如题,angular中$watch也是我们在开发的时候需要的各种监听;

$watch接收3个参数,第一个是对象,或者对象中某个属性,或者一个函数;第二个为回调方法【回调中有两个参数第一个为新值newVal,第二个为旧值oldVal】,第三个为true/false默认为false,为true的时候对象中的某个属性值发生改变都会触发回调;

如以下代码:

<section ng-controller="myCtrl">
    单价:<input type="text" ng-model="shop.money"/>
    数量:<input type="text" ng-model="shop.count"/>
    运费:{{shop.fre}}
    <br/>

    <p>总价:{{total() + shop.fre | currency:‘¥‘ }}</p>
</section>
<script>
    var myapp = angular.module("myapp",[]);
    myapp.controller(‘myCtrl‘,["$scope",function($scope){
        $scope.shop = {
            money : 10,
            count:1,
            fre : 10
        };
        $scope.total = function() {
            return $scope.shop.money * $scope.shop.count;
        }
        //$watch 接收3个参数,前两个是必选的,第一个为监听的对象或者属性,也可以监听一个函数,第二个为被监听对象或者属性变化时的回调,第三个为true,表示深度监听
        //当为true的时候监听的第一个为对象时,对象的某个属性发生改变也会监听到并触发回调,没写默认false对象某个属性发生改变不会触发回调
        //回调参数接收3个参数,第一个为新值,第二个为旧值,前面监听的是什么回调里的就是前面监听的对象或者属性或者函数
        $scope.$watch(‘shop‘, function(newVal, oldVal){

            console.log(newVal.money);
            console.log(oldVal.money);

        }, true);
    }]);

</script>

  第三个参数为true时改变shop对象中任何一个数都会触发$watch回调;

//$watch监听函数;

        //监听函数
        $scope.$watch($scope.total, function(newVal, oldVal){
           $scope.shop.fre = newVal>=99? 0 : 10;
        });

  

当总价超过99的时候运费变为了0,这其实用到了angular中的双向数据绑定,当model数据发生改变的时候view也会发生改变如运费,而当view层数据改变的时候model也会发生改变如数量改变时总价也会发生改变。

好了,这是一个关于$watch的小详解,有不正确的地方欢迎大家指正

时间: 2024-12-28 18:56:50

angularJS之$watch的一个小介绍的相关文章

Android笔记2——开发前奏2工程目录介绍和一个小应用

转载请注明http://www.cnblogs.com/devtrees/p/4405519.html 一.创建第一个应用HelloWorld (一)创建步骤: 1.New出一个Android Application Project 三种方式 1): 2): 3): 2.会出现下图的窗口: 分别是:应用名:给用户看的 工程名:开发工具中显示的项目名 包名: 客户端中设置->应用->应用列表中显示的名字 兼容的最低版本: 兼容的最高版本: 开发基于的版本:(一般将兼容的最高版本和开发所基于的版本

介绍一个小工具 Linqer

原文:介绍一个小工具 Linqer 这些天写Linq挺烦人的,就上网搜搜可有什么好的sql转Linq的工具,咦,马上就看上了Linqer. 哈哈,介绍一下使用方法吧: 官方下载网站:http://sqltolinq.com/download. 第一步:运行这个神马文件. 第二步:指定一个路径给它.他会生成一个Linqer.exe可运行的文件. 第三步:运行这个exe文件,点击Add按钮, 第四步:在弹出的Add界面中,给串串取个名字(如这里面的Demo),点右边的“省略号”按钮,会弹出你做梦都会

使用eval()将json字符串转换为对象要多加一个小括号

使用eval()将json字符串转换为对象要多加一个小括号:关于eval()函数的具体用法这里就不多介绍了,具体可以参阅javascript的eval()方法一章节,下面就介绍一下为什么使用eval()函数将json格式字符串转换为对象的时候,需要多嵌套一层小括号,下面就介绍一下它的原因,希望能够对需要的朋友带来帮助.先看一段转换代码: var jsonStr='{"webName":"蚂蚁部落","webAddress":"青岛市南区

【开源一个小工具】一键将网页内容推送到Kindle

最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zhanjindong/SimpleSendToKindle 功能:Windows下一个简单的将网页内容推送到Kindle的工具. 写这个工具的是满足自己的需求.自从买了Kindle paperwhite 2,它就成了我使用率最高的一个电子设备.相信很多Kindle拥有者和我一样都有这样一个需求:就是白

电商总结(八)如何打造一个小而精的电商网站架构

前面写过一些电商网站相关的文章,这几天有时间,就把之前写得网站架构相关的文章,总结整理一下.把以前的一些内容就连贯起来,这样也能系统的知道,一个最小的电商平台是怎么一步步搭建起来的.对以前的文章感兴趣的朋友可以看这个,http://www.cnblogs.com/zhangweizhong/category/879056.html 本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系统容

一个小企业招人的胡思乱想

标题有点凌乱,因为思路本身就有些凌乱.“夏日炎炎正好眠”,懒得整理,就想到哪写到哪,就当朋友聊聊天吧. 我们企业连小企业都算不上,准确的说应该叫做“微型企业”,目前员工一名——本人光杆司令一枚.带了一个小妹妹,暂时还在“见习期”,试用期都还没有进入,所以应该还不能算公司员工. 我现在也算是个程序员(对我的经历感兴趣的同学可以看看我的另一篇博客<程序员30过后>),本着提高技术,深入一线的指导思想,之前的代码都是自己一个人写的.也曾幻想过自己一个人做完整个项目,成就IT届一番孤胆英雄的佳话传说.

BeX5开发中MySQL视图使用的一个小问题

问题 数据操作中的查询是极端重要的,使用频繁.MySQL数据库中视图概念的存在十分类似于微软Access小型关系数据库中的查询(二级考试重点).视图的存在极大减小了数据表的创建数量,而且还有更为高级的运用技巧.本文介绍在基于起步科技的BeX5平台上使用MySQL数据库中视图时反向生成本体时注意的一个小问题. MySQL数据库中表在BeX5平台开发中对应于"物理表"概念,但是为了增强软件开发中数据层的灵活性(软件需求阶段的实体结构不是一下百分之分确定的:有时需要不断调整),平台引入了本体

如何打造一个小而精的电商网站架构?

本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系统容量预估 7. 缓存系统 一.小型电商网站的架构 刚从传统软件行业进入到电商企业时,觉得电商网站没有什么技术含量,也没有什么门槛,都是一些现有的东西堆积木似的堆出来罢了.然而,真正进入到这个行业之后,才发现并非如此.有人说过,好的架构,是演化出来的,电商网站的架构也是如此.现在好的电商网站,看似很复杂,很牛逼,其实也是从很小的架构,也

一个小测试总结

最近在学webdriver,用手头的项目做了一个小demo,真是阻碍重重,别看看短短的几行代码,丫的一直报错,还不知道错在哪里.哎,没办法,刚入门的菜鸟总是备受打击.由于这么几行代码是花了一个星期的上班空闲时间写出来的,有必要做一下小小的总结.不管怎么说,虽然这段小代码不完美,有时还是会报莫名其妙的错,但还是相当有必要做个总结的,付出了时间嘛.再说很久没更新博客了,太懒了(鄙视一下自己) #encoding: gbk require 'selenium-webdriver' dr = Selen