前往小程序,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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Node.js 8有哪些重要功能和修复?
5月30日12点,Node.js 8正式发布了,这个版本具有一系列新功能和性能改进,并且这些功能和改进将获得长期支持(LTS)。
葡萄城控件
2022/05/09
1.1K0
Node.js 8有哪些重要功能和修复?
Node.js初识
之前写前后端分离的服务器的时候接触过一点点Node.js,查了点资料。这里就把学到的一些东西记录下来(
SimpleAstronaut
2022/08/09
3K0
环境搭建-Node.js
Node.js 发布于2009年5月,由 Ryan Dahl 开发,是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式 I/O 模型,让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与 PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。
wangmcn
2022/07/26
1.4K0
环境搭建-Node.js
nodes.js详细安装
Node.js安装包及源码下载地址为:https://nodejs.org/en/download/。
小小咸鱼YwY
2019/09/11
2.1K0
nodes.js详细安装
Node.js简介与安装.md
描述:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,它是目前非常火热的技术(正式开启JavaScript的后端开发之旅), 它在设计上类似于Ruby系统并受到Python的Twisted的影响启发,它作为异步事件驱动的JavaScript运行时,它旨在构建可伸缩的网络应用程序。
全栈工程师修炼指南
2022/09/28
3.6K0
Node.js简介与安装.md
Linux -> CentOS 安装 node.js
简述 一键安装 wget https://nodejs.org/dist/v14.17.1/node-v14.17.1-linux-x64.tar.xz tar xf node-v14.17.1-linux-x64.tar.xz ./node-v14.17.1-linux-x64/bin/node -v mv node-v14.17.1-linux-x64 /usr/local/node-v ln -s /usr/local/node-v/bin/node /bin/node ln -s /usr/lo
xlj
2021/06/27
1K0
Linux -> CentOS 安装 node.js
Node.js环境安装
本文基于腾讯云云服务器CVM系统工具配置文章的基础上,在腾讯云云服务器(CentOS系统)上安装 Node.js 环境。
lqmeta
2022/02/06
1.8K0
Linux 上安装 Node.js
Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用:
陈不成i
2021/07/09
1.2K0
Node.js 10带着npm 6来了!
今天,Node.js 发布最新版本 Node.js 10.0.0,同时,npm 6 也随之发布。据了解,今年 10 月,Node.js 10.x 将成为长期支持版本,该版本专注于稳定性、扩展支持以及为各类应用提供一个可靠稳定的平台。
CRPER
2023/06/09
7150
01 . 部署Node.js项目
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效,非常适合运行在分布式设备的数据密集型的实时应用。Node.js的包管理器npm,是全球最大的开源库生态系统。Node.js的典型应用场景包括:
iginkgo18
2020/09/27
2.9K0
01 . 部署Node.js项目
Node.js 15 正式版发布
前两天,Node.js官方发布了Node.js 15的正式版本,Node.js 15 将替代 Node.js 14 成为当前的的稳定发行版,后者将在本月晚些时候升级为 LTS(长期支持)版本。如果大家想体验下Node.js 15 的最新功能,可以从官方进行下载。
xiangzhihong
2022/11/30
1.8K0
Node.js 16 发布,V8 升级至 9.0!
你可以在 这里[1] 下载最新版,或者使用 UNIX 上的 Node 版本管理器[2] 运行 nvm install 16 命令进行安装。Node.js 博客中包含的变更日志可以在 这里[3] 找到。
前端达人
2021/06/16
3.5K0
node.js 安装与 npm 加速
本文记录 node.js 安装过程。 Linux 安装 官网链接:https://nodejs.org/zh-cn/ 方法1 下载代码包: 下载后解压,将文件夹/bin目录添加到系统路径即可使用npm命令管理node.js包 方法2 下载二进制文件包 命令行可以: wget https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz 下载后解压并移动至系统目录: # 解压缩 tar -xf node-v16.14.2-lin
为为为什么
2022/08/06
2.7K0
node.js 安装与 npm 加速
Node——服务器上安装Node.js
思索
2024/08/16
900
Windows 上安装 Node.js
步骤 4 : Node.js默认安装目录为 "C:\Program Files\nodejs\" , 你可以修改目录,并点击 next(下一步):
陈不成i
2021/07/09
8230
CentOS7的node.js安装
一般在安装完node之后,默认已经帮我们安装好npm了 ,使用npm -v可以查看npm版本 通常如果使用npm install安装依赖包会比较慢,这里推荐使用淘宝镜像
Lansonli
2021/10/09
1.9K0
Node.js 20 正式发布
作者| 王强、丁晓昀 策划 | 褚杏娟 4 月 18 日,Node.js 在官方博客发布了 Node.js 20 版本。 新版亮点: 引入权限控制模型 (Permission Model) 同步的 import.meta.resolve Test Runner 到达稳定状态 V8 JavaScript 引擎更新至 11.3,,增加了 5 个新特性 支持构建单一可执行应用程序 Ada 更新至 2.0 等。 提醒一下,Node.js 14 已进入维护状态 (Maintenance LTS),名称为 Fe
深度学习与Python
2023/04/21
7030
Node.js 20 正式发布
CentOS 7 安装Node
因为下载来的文件是.xz方式压缩的,不能直接使用linux命令tar解压,我们先使用xz命令解压
游魂
2018/09/18
3.4K2
CentOS 7 安装Node
Linux下安装Node.js并国内源(淘宝)
1、 官网下载安装包 wget https://nodejs.org/dist/v14.2.0/node-v14.2.0-linux-x64.tar.xz 2、解压node包 tar xf node-v14.2.0-linux-x64.tar.xz mv node-v14.2.0-linux-x64.tar /usr/local/node 3、设置环境变量 1.打开 /etc/profile 2.在文件最后添加:export PATH=/usr/local/node/bin:$PATH 3.保存 4.使生效
TSINGEYE清眸物联
2023/01/04
1.2K0
Node.js学习笔记(一)——Node.js概要、NPM与package.json
Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。
张果
2022/09/28
2.5K0
Node.js学习笔记(一)——Node.js概要、NPM与package.json
相关推荐
Node.js 8有哪些重要功能和修复?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文