angular 双向绑定demo

  1 <!DOCTYPE html>
  2 <html lang="en" ng-app="myApp">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>angular 点餐</title>
  6     <script src="js/angular.js"></script>
  7 </head>
  8 <body ng-controller="myCtrl">
  9 <div style="width:400px">
 10     <h1 ng-bind="appName"></h1>
 11     <h4 ng-bind="restaurant"></h4>
 12     <hr>
 13     <table>
 14         <th ng-repeat="head in th" ng-bind="head" ></th>
 15         <tr ng-repeat="food in meal" >
 16             <td><input type="checkbox" ng-model="food.isCheck" ng-click="select()" ng-checked="food.isCheck"></td>
 17             <td ng-bind="food.name"></td>
 18             <td ng-bind="food.price|moneyFormat"></td>
 19             <td ng-bind="food.quantity"></td>
 20
 21             <td ng-click="count(food,-1);select()">-</td>
 22             <td ng-init="key=$index" ng-click="del($index);select()">删除</td>
 23             <td ng-click="count(food,1);select()">+</td>
 24
 25             <td ng-bind="food.price*food.quantity|moneyFormat"></td>
 26
 27         </tr>
 28     </table>
 29     <hr>
 30     <h4><input type="checkbox" ng-model="checkAll" ng-click="toggleSelect();select()" ng-checked="checkAll">全选</h4>
 31     <h4>合计:  <span  ng-bind="totalprice|moneyFormat" ></span></h4>
 32
 33
 34 </div>
 35
 36 <script>
 37     var app =angular.module(‘myApp‘,[‘ng‘]);
 38     app.controller(‘myCtrl‘,function($scope){
 39         $scope.appName=‘我饿了‘;
 40         $scope.restaurant=‘xl美食‘;
 41         $scope.th=[‘选择‘,‘商品‘,‘价格‘,‘数量‘,‘-‘,‘删除‘,‘+‘,‘小计‘];
 42         // $scope.isCheck=false;
 43         $scope.meal=[{name:‘红烧肉盖饭‘,price:19,quantity:1,isCheck:false},
 44                    {name:‘梅菜扣肉盖饭‘,price:19,quantity:1,isCheck:false},
 45                    {name:‘肥牛饭‘,price:18,quantity:1,isCheck:false},
 46                    {name:‘咖喱鸡‘,price:17,quantity:1,isCheck:false},
 47                    {name:‘卤蛋‘,price:2,quantity:1,isCheck:false},
 48                    {name:‘卤肉饭‘,price:18,quantity:1,isCheck:false}
 49             ];
 50         $scope.select=function(){
 51             $scope.checkAll=true;
 52
 53            //遍历选择的商品
 54             angular.forEach($scope.meal,function(val,key){
 55                     // console.log(‘已选择‘+val.name);
 56                     $scope.checkAll=$scope.checkAll&&val.isCheck;
 57             })
 58             //合计价格
 59             $scope.totalprice=0;
 60             angular.forEach($scope.meal,function(val,key){
 61                 // console.log(‘已选择‘+val.name);
 62                if(val.isCheck){
 63                    $scope.totalprice+=val.price*val.quantity;
 64                }
 65             })
 66         }
 67
 68         $scope.toggleSelect=function(){//点击全选/取消全选的时候,遍历商品列表更换选中的值
 69             angular.forEach($scope.meal,function(val,key){
 70                 val.isCheck=$scope.checkAll;
 71             })
 72         }
 73
 74         $scope.del=function(index){
 75             console.log(index);
 76             $scope.meal.splice(index,1);
 77         }
 78
 79         $scope.count=function(object,num){
 80             object.quantity+=num;
 81             if(object.quantity<1){
 82                 object.quantity=1;
 83             }
 84
 85         }
 86
 87
 88     });
 89     //金额的过滤器
 90     app.filter(‘moneyFormat‘,function(){
 91         return function(val){
 92             if(val){//判断是否有值
 93                 return ‘¥‘+val.toFixed(2)+‘元‘
 94
 95             }else{
 96                 val=0;
 97                 return ‘¥‘+val.toFixed(2)+‘元‘
 98
 99             }
100
101         }
102
103     })
104
105 </script>
106 </body>
107 </html>

如有复制,请注意js文件路径.

原文地址:https://www.cnblogs.com/s-xl/p/8969933.html

时间: 2024-10-10 14:11:26

angular 双向绑定demo的相关文章

Vue &amp;&amp; Angular 双向绑定检测不到对象属性的添加和删除

由于ES5的限制 Vue  && Angular 双向绑定检测不到对象属性的添加和删除  还有数组增加索引.这些改变不会触发change事件.Vue是因为实例化的时候已经把各个属性都setter和getter进去了. 两个实现的机制不一样.故解决方案也不一样. 详情查看:https://cn.vuejs.org/v2/guide/list.html#对象更改检测注意事项 Angular解决方案: 可以手动调用$apply()方法,会再自动轮询一遍 Vue解决方案: 使用vm.$set(对象

div实现自适应高度的textarea,实现angular双向绑定

相信不少同学模拟过腾讯的QQ做一个聊天应用,至少我是其中一个. 过程中我遇到的一个问题就是QQ输入框,自适应高度,最高高度为3row. 如果你也像我一样打算使用textarea,那么很抱歉,你一开始就错了. textarea不是不可以的,然后我是这样错的.(就是监听scroll 如果出现了,就增加1rows 的高度)然而这样真的很挫 textarea.bind('change','keydown'){ if(scrollTop > 0 ) { textarea.rows += 1 } } 正确的

angular双向绑定

在需要使用的HTML中使用[(ngModel)]进行数据绑定: <div> <span>name:</span> {{hero.name}}</div> <div> <label> name: <input [(ngModel)]="hero.name" placeholder="name"> </label></div> 如果直接使用会报错,需要在app.m

angular 双向绑定

<input  [value]="username"  (input) = "username = $event.target.value" [value] = "username"  -- 绑定 username 值到 input 的value (input)= “表达式”   --绑定表达式到input 的input事件 username = $event.target.value  -- 在input 事件触发时执行 $event 

angular双向绑定与单向绑定的写法区别

[ngModel]="manualCode" (ngModelChange)="manualCode=$event;" 等价于下面这样的写法: [(ngModel)]="manualCode" 但有时候,需要在模型发生改变时,还要添加一些自定义事件的话,第一种写法就是最合适的选择了.

Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定

一放假就高产似母猪了. 00.混乱的前端界 Angular1.x确实是个学习成本很高的框架,刚开始实习那会儿,前端啥也不懂,工头说用Angular,我们这群小弟也只能硬着头皮学.在这之前,前端的东西大部分都用的jQuery,而Angular正好是和jQuery的思维是相反的,开发过程中遇到了不少坑.而Angular团队也放弃了1.x开始开发和React神似的2.0版本,唉,真是沧海桑田啊. 01.Angular vs jQuery Angular模块化和解耦的思路确实值得一学,但是相对于成熟的j

自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选&amp;多选下拉框

先说点闲话,熟悉Angular的猿们会喜欢这个插件的. 00.本末倒置 不得不承认我是一个喜欢本末倒置的人,学生时代就喜欢先把晚交的作业先做,留着马上就要交的作业不做,然后慢悠悠做完不重要的作业,卧槽,XX作业马上要交了,赶紧补补补.如今做这个项目,因为没找到合适的多选下拉Web插件,又不想用html自带的丑陋的<select multiple></select>,自己花了一整天时间做了一个.或许这样占用的主要功能开发的时间,开发起来会更有紧迫感吧.感觉自己是个抖M自虐倾向,并且伴

Angular数据双向绑定

Angular数据双向绑定 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 一.什么是数据双向绑定 Angular实现了双向绑定机制.所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面. 一个最简单的示例就是这样: <div ng-control

数据的双向绑定 Angular JS

接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 视图模型的继承关系 模块和依赖注入的设计 待定 数据的双向绑定 Angular实现了双向绑定机制.所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面. 一个最简单的示例就是这样: <div ng-controller="CounterCtrl"> &