前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >AngularJS中使用表单输入的应用设计

AngularJS中使用表单输入的应用设计

作者头像
企鹅号小编
发布于 2018-01-08 02:35:20
发布于 2018-01-08 02:35:20
2.1K0
举报
文章被收录于专栏:编程编程

在Angular中使用表单元素非常方便。正如我们在前面几个例子中看到的,你可以使用ng-model属性把元素绑定到你的模型属性上。这一机制对于所有标准的表单元素都可以起作用,例如文本框、单选按钮、复选框,等等。我们可以像下面这样把一个复选框绑定到一个属性上:

这样做的含义是:

1.当用户选中了复选框之后,SomeController中$scope的youCheckedIt的属性就会变成true。而反选复选框会让youCheckedIt变为false。

2.如果你在SomeController中把$scope.youCheckedIt设置为true,那么UI中的复选框将会变成选中状态。设置为false将会反选复选框。

举例来说,当用户做了某件事情的时候,我们希望程序能真正地做出某种动作。对于输入元素来说,你可以使用ng-change属性来指定一个控制器方法,一旦用户修改了输入值,这个方法就会被调用。我们来做一个简单的计算,帮助消费者计算一下需要付多少钱:

对于这个非常简单的例子来说,我们只要把输出文本框的值设置为用户估价的10倍即可。同时,在一开始的时候我们会把文本框的默认值设置为0:

但是,以上代码所采取的策略有一个潜在的问题,即,只有当用户在文本框中输入值的时候我们才会去计算所需的金额。当用户在这个特定的输入框中输入时,输入框就会正确地刷新。但是,如果还有其他输入框也绑定到模型中的这个属性上,会怎么样呢?如果接收到服务端的数据,导致数据模型进行刷新,又会怎么样呢?

为了能够正确地刷新输入框,而不管它是通过何种途径进行刷新的,我们需要使用$scope中的$watch()的函数。在本章后续的内容里将会详细讨论这个watch函数。最基本的一点就是,你可以调用$watch()函数来监视一个表达式,当这个表达式发生变化时就会调用一个回调函数。

在当前这个例子中,我们需要监视funding.startingEstimate,当它的值发生变化时就调用computeNeeded()。下面运用这一技术重写StartUpController:

但是,以上代码所采取的策略有一个潜在的问题,即,只有当用户在文本框中输入值的时候我们才会去计算所需的金额。当用户在这个特定的输入框中输入时,输入框就会正确地刷新。但是,如果还有其他输入框也绑定到模型中的这个属性上,会怎么样呢?如果接收到服务端的数据,导致数据模型进行刷新,又会怎么样呢?

为了能够正确地刷新输入框,而不管它是通过何种途径进行刷新的,我们需要使用$scope中的$watch()的函数。在本章后续的内容里将会详细讨论这个watch函数。最基本的一点就是,你可以调用$watch()函数来监视一个表达式,当这个表达式发生变化时就会调用一个回调函数。

在当前这个例子中,我们需要监视funding.startingEstimate,当它的值发生变化时就调用computeNeeded()。下面运用这一技术重写StartUpController:

请注意,需要监视的表达式位于引号中。是的,它是一个字符串。这个字符串会被当作Angular表达式来执行。表达式可以执行一些简单的操作,并且可以访问$scope对象中的属性。

我们还可以监视一个函数的返回值,但是监视funding.startingEstimate属性是没有用的,因为这个值算出来是0,也就是它的初始值,而且这个值永远不会发生变化。然后,无论何时只要funding.startingEstimate发生变化,我们的funding.needed就会自动刷新,我们可以编写一个更加简单的模板,示例如下:

Starting:

Recommendation: {}

在某些情况下,你不想一有变化就立刻做出动作;而是要进行等待,直到用户告诉你他已经准备好了,例如完成订购或者发出一条确认信息之后。如果你正在使用表单把输入项组织起来,你可以在form自身上使用ng-submit指令来指定一个函数,当表单提交的时候可以执行这个函数。我们来扩展前面的例子,实现用户点击一个按钮就可以为他所选的商品计算金额:

同时,在提交表单的时候,ng-submit还会自动阻止浏览器执行默认的POST操作。对于处理其他事件的情况,例如提供非表单提交型的交互,Angular提供了一些事件处理指令,它们类似于浏览器原生的事件属性。对于onclick,可以使用ng-click;对于ondblclick,可以使用ng-dblclick;等等。我们可以试着实现一个这样的功能:再次扩展开始的那个计算器,为它添加一个复位按钮,这个按钮将会把输入值重置为0:

本文来自企鹅号 - 亿仁网媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 亿仁网媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
详细介绍 AngularJS 表单的各种特性、用法和最佳实践
AngularJS 是一款强大的 JavaScript 前端框架,提供了丰富的功能和工具,其中之一就是表单处理。表单是 Web 应用程序中常见的用户输入和数据交互方式,AngularJS 提供了便捷且强大的表单处理机制,使开发者能够轻松地构建、验证和处理表单数据。本文将详细介绍 AngularJS 表单的各种特性、用法和最佳实践。
网络技术联盟站
2023/07/05
2630
AngularJS快速入门
记得第一次听说AngularJS这项很赞的Web的前端技术,那时还是2014年,年中时我们我的一个大牛兄弟当时去面试时,被问到了是否熟悉该技术,当时他了解和使用的技术比较多。我们询问他面试情况时,他给俺这个菜菜科普了该技术,印象比较深的是该技术支持前端MVC架构,可以完成大部分原有的后台工作,当时就觉得很神奇,但由于自身技术基础比较薄弱,没有太多时间和积累去学习新的技术,因而搁置了。在2016新年初始,正好有一些富余时间,正好学习下这个被称为就是“”两个大括号“”的前端框架(当前已经非常成熟,国内大部分公司
用户1216676
2018/01/24
2.6K0
AngularJS快速入门
再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
ng-bind 单向数据绑定($scope -> view),用于数据显示,简写形式是 {{}}。
周陆军
2018/08/02
7.9K0
Angularjs的表单验证
在AngularJS中,有许多用于验证的指令。我们将先学习几个最流行的内置指令,然后再创建一个自定义验证规则的指令。
星回
2018/08/02
2.2K0
Angularjs基础(十二)
ng-model-options       描述:规定如何更新模型             实例: 在失去焦点时绑定输入框的值scope 变量中。                 <div ng-app="myApp" ng-controller="myCtrl">                   <input ng-model ="name">                 </div>                 <script>          
用户1197315
2018/01/22
3.1K0
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
23.3K0
【AngularJS】 # AngularJS入门
AngularJS ng-model 指令
在前端开发中,表单是用户与网站互动的重要组成部分。为了实现表单数据的双向绑定,AngularJS 提供了 ng-model 指令。本文将详细介绍 ng-model 指令的用法和工作原理,并提供一些实例帮助读者更好地理解和应用该指令。
网络技术联盟站
2023/07/05
1930
Angularjs基础(十一)
ng-csp       描述:修改内容的安全策略       实例: 修改AngularJS 中关于"eval"的行为方式及内联样式;           <body ng-app="" ng-csp>       定义和用法           ng-csp 指令用于修改AngularJS 的安全策略。           如果使用了ng-csp指令,AngularJS 执行eval 函数,但允许注入内联样式。           设置ng-csp 指令为no-unsafe-eval
用户1197315
2018/01/22
2.4K0
angularjs输入验证[通俗易懂]
原文 http://www.cnblogs.com/woshinidezhu/p/Form-validation-with-AngularJS.html
全栈程序员站长
2022/09/15
1.3K0
轻松构建灵活的表单,试试AngularJS 选择框
在Web开发中,表单是一个非常重要的组件。表单通常包含各种输入字段,例如输入框、复选框和选择框等,用于收集用户的输入数据。AngularJS 提供了一系列的指令和服务,使得表单的开发更加简单、高效。本文将详细介绍 AngularJS 中的选择框(Select)指令,以及如何使用它来构建灵活的表单。
网络技术联盟站
2023/07/05
2280
vue基础-动态样式&表单绑定&vue响应式原理
动态样式 作用:使用声明式变量来控制class和style的值 语法: :class/:style 注意:尽可能不要把动态class和静态class一起使用,原因动态class起作用的时间会比较晚,需要通过Vue编译,会出现‘一闪而过’的效果。 动态class :class='由类名拼接而成的字符串""'字符串格式 :class='[表达式1,表达式2,...]'数组格式 注意:每个表达式都要求返回一个已经定义过的class类 :class='{"css类名1":布尔值,"css类名2":布尔值,...}'
冬夜先生
2021/10/20
1.7K0
angularjs 表单验证
一、常用的表单验证指令  1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required />   2. 最小长度 验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}": <input type="text" ng-minlength="5" /> 3. 最大长度 验证表单输入的文本长度是否小于或等于某个最大值,在输入字段上使用指令ng-maxlength=
柴小智
2018/04/10
6.7K0
angularjs 表单验证
4.vue 的双向绑定的原理是什么?_监听门事件
前面的指令和 { { }} 都是单向绑定,当用户主动在文本框中输入内容后,如果使用 :value=”str” 方式绑定,用户输入的内容是无法自动回到程序中的变量中保存的。这是因为单向绑定只能将程序中的变量值,自动同步到页面上显示,不能自动将界面中的用户主动做的修改,自动同步回程序中变量里保存。
全栈程序员站长
2022/11/02
1.4K0
Vue表单输入绑定
  表单控件的数据绑定就是用v-model指令实现的,它会根据控件类型自动选取正确的方法更新元素。由于表单控件有不同的类型,如文本输入框、复选框、单选按钮、选择框等,v-model指令在不同的表单控件上应用时也会有所差异。
别团等shy哥发育
2023/02/25
7.4K0
Vue表单输入绑定
软件测试|测试平台Vue3 - 表单的输入与绑定
输入框输入文本,对应以前都是操作DOM树结构进行的绑定。现在学习了VUE不建议大家通过DOM树进行绑定获取数据。
霍格沃兹测试开发Muller老师
2022/12/29
4190
在 Chrome DevTools 中调试 JavaScript
由浅入深说一说怎么样在 Chrome DevTools 中调试 JavaScript。
从入门到进错门
2020/03/17
5.1K0
AngularJS的digest循环和$apply
最近在写AngularJS,遇到一个问题,在Ajax异步请求后台数据,然后将结果赋值给当前scope中某对象的属性,在页面中怎么都取不到,然而在js端却可以正常打印出来。
奋飛
2019/08/15
3.2K0
第217天:深入理解Angular双向数据绑定的原理
双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理。angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成。
半指温柔乐
2018/09/11
3.7K0
第217天:深入理解Angular双向数据绑定的原理
用AngularJS来实现异步数据的购物车功能设计
我们来看一个稍微大一点的例子,它将会展示Angular的更多特性。想象一下,我们打算构建一款购物应用,需要在应用中的某个地方展示用户的购物车,并且用户能够对其进行编辑。我们直接跳到购物车这个部分: 最终UI截屏如图所示。 下面是对这段代码的一个概要解释,本书后续的内容将会对此做更深入的解析。我们从头开始: g-app属性将用来告诉Angular页面中的哪一部分需要接受它的管理。既然我们把这个属性放在标签上,那么就是在告诉Angular,我们希望它管理整个页面。通常情况下你只需要这么做就可以了,但是,
企鹅号小编
2018/01/23
1.6K0
用AngularJS来实现异步数据的购物车功能设计
AngularJS 表单
checkbox 的值为 true 或 false,可以使用 ng-model 指令绑定,它的值可以用于应用中:
陈不成i
2021/07/23
3K0
相关推荐
详细介绍 AngularJS 表单的各种特性、用法和最佳实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文