磁县网站制作公司渑池县建设局网站
news/
2025/9/23 0:31:38/
文章来源:
磁县网站制作公司,渑池县建设局网站,网站如何设置关键词,做造价在那个网站比较好在scope内置的所有函数中#xff0c;用得最多的可能就是$watch 函数了#xff0c;当你的数据模型中某一部分发生变化时#xff0c;$watch函数可以向你发出通知。你可以监控单个对象的属性#xff0c;也可以监控需要经过计算的结果#xff08;函数#xff09;#xff0c;…在scope内置的所有函数中用得最多的可能就是$watch 函数了当你的数据模型中某一部分发生变化时$watch函数可以向你发出通知。你可以监控单个对象的属性也可以监控需要经过计算的结果函数实际上只要能够被当作属性访问到或者可以当作一个JavaScript函数被计算出来就可以被$watch 函数监控。它的函数签名为$watch(watchFn, watchAction, deepWatch) 其中每个参数的详细含义如下。watchFn 该参数是一个带有Angular表达式或者函数的字符串它会返回被监控的数据模型的当前值。这个表达式将会被执行很多次所以你要保证它不会产生其他副作用。也就是说要保证它可以被调用很多次而不会改变状态。基于同样的原因监控表达式应该很容易被计算出来。如果你使用字符串传递了一个Angular表达式那么它将会针对调用它的那个作用域中的对象而执行。watchAction 这是一个函数或者表达式当watchFn 发生变化时会被调用。如果是函数的形式它将会接收到watchFn的新旧两个值以及作用域对象的引用。其函数签名为function(newValue, oldValue, scope)。deepWatch 如果设置为true这个可选的布尔型参数将会命令Angular去检查被监控对象的每个属性是否发生了变化。如果你想要监控数组中的元素或者对象上的所有属性而不只是监控一个简单的值你就可以使用这个参数。由于Angular需要遍历数组或者对象如果集合比较大那么运算负担就会比较重。 $watch 函数会返回一个函数当你不再需要接收变更通知时可以用这个返回的函数注销监控器。 如果我们需要监控一个属性然后接着注销监控我们可以使用以下代码...var dereg $scope.$watch(someModel.someProperty, callbackOnChange());…dereg(); 我们再回到第1章的购物车案例把它的功能扩充完整。例如当用户添加到购物车中的商品价值超过100美元的时候我们会给他10美元的折扣。我们将会使用下面这种模板div ng-controllerCartController div ng-repeatitem in items span{{item.title}}/span input ng-modelitem.quantity span{{item.price | currency}}/span span{{item.price * item.quantity | currency}}/span /div divTotal: {{totalCart() | currency}}/div divDiscount: {{bill.discount | currency}}/div divSubtotal: {{subtotal() | currency}}/div/div 而CartController看起来可能像下面这样function CartController($scope) { $scope.bill {}; $scope.items [ {title: Paint pots, quantity: 8, price: 3.95}, {title: Polka dots, quantity: 17, price: 12.95}, {title: Pebbles, quantity: 5, price: 6.95} ]; $scope.totalCart function() { var total 0; for (var i 0, len $scope.items.length; i len; i) { total total $scope.items[i].price * $scope.items[i].quantity; } return total; } $scope.subtotal function() { return $scope.totalCart() - $scope.discount; }; function calculateDiscount(newValue, oldValue, scope) { $scope.bill.discount newValue 100 ? 10 : 0; } $scope.$watch($scope.totalCart, calculateDiscount);} 注意CartController 的底部我们在totalCart() 的值上面设置了一个监控用来计算此次购物的总价。只要这个值发生变化监控器就会调用calculateDiscount() , 然后我们就可以把折扣设置为相应的值。如果总价超过100美元我们将会把折扣设置为10美元。否则折扣为0。 angular
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910882.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!