AngularJS 对许多输入进行数据绑定的方式是什么?

2023-12-29

我正在学习 angularjs,我希望能够让用户输入许多输入。当这些输入被输入list数组元素应该相应改变。我想尝试使用 ngRepeat 指令,但我读到,因为它创建了一个新范围,所以我无法进行数据绑定:

<div ng-repeat="item in list">
    <label>Input {{$index+1}}:</label>
    <input ng-model="item" type="text"/>
</div>

我想知道是否应该使用自定义指令来执行此操作或以不同的方式处理它。


数据绑定到原始“项目”不起作用的原因是 ng-repeat 为每个项目创建子范围的方式。对于每个项目,ng-repeat 都有一个新的子作用域原型继承自父作用域(参见下图中的虚线),and then它将项目的值分配给子范围上的新属性(下图中的红色项目)。新属性的名称是循环变量的名称。来自ng重复源代码 https://github.com/angular/angular.js/blob/master/src/ng/directive/ngRepeat.js:

childScope = scope.$new();
...
childScope[valueIdent] = value;

如果 item 是基元,则新的子作用域属性实际上会分配基元值的副本。此子作用域属性对父作用域不可见,并且您对输入字段所做的更改存储在该子作用域属性中。例如,假设我们在父范围内

$scope.list = [ 'value 1', 'value 2', 'value 3' ];

在 HTML 中:

<div ng-repeat="item in list">

然后,第一个子作用域将具有以下内容item属性,具有原始值 (value 1):

item: "value 1"

由于 ng-model 数据绑定,您对表单输入字段所做的更改存储在该子范围属性中。

您可以通过将子作用域记录到控制台来验证这一点。添加到您的 HTML 中的 ng-repeat 中:

<a ng-click="showScope($event)">show scope</a>

添加到您的控制器:

$scope.showScope = function(e) {
    console.log(angular.element(e.srcElement).scope());
}

With @Gloopy's approach, each child scope still gets a new "item" property, but because list is now an array of objects, childScope[valueIdent] = value; results in the item property's value being set to a reference to one of the array objects (not a copy).

使用 showScope() 技术,您将看到子作用域item属性的值引用数组对象之一——它不再是原始值。

也可以看看不要绑定到 ng-repeat 子作用域中的原语 https://github.com/angular/angular.js/issues/1267 and
AngularJS 中的范围原型/原型继承有哪些细微差别? https://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs(其中包含使用 ng-repeat 时范围的图片)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 对许多输入进行数据绑定的方式是什么? 的相关文章

  • 显示具有多个父代的 D3 树

    我目前有this http bl ocks org mbostock 4339083图已实现 我希望在描述具有多个父节点的子节点时保持结构和可折叠性 有没有办法做到这一点 我研究了力图 但我也想保留一组层次结构 这意味着 1 级的父级可以有
  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 用于选择特定 div 中具有特定类的锚元素的 jQuery 选择器是什么

    我有一些这样的代码 我想选择每个 a 带有类的标签status在 div 中foo div a class status a div 你可以这样做 foo find status a
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo

随机推荐

  • “将磁盘插入驱动器 D”阻止 Haskell 启动

    这个问题是一个产物另一个问题 https stackoverflow com questions 45362161 how do you import data heap 在那个问题中 我寻求有关导入 Data Heap 的建议 有人告诉我
  • 向 Laravel 添加第三方库

    我有一个 RSA 算法库 由支付网关提供给我 当我执行 include app path PaymentGateway Crypt RSA php 这并尝试将一个对象制作为 rsa new Crypt RSA 这给了我错误的说法 Class
  • SwiftUI macOS Xcode 风格工具栏

    I like to recreate a toolbar similar to Apples Notes App using SwiftUI in a macOS app I am using Xcode 12 3 and macOS 11
  • 具有单页应用程序刷新访问令牌的 Oauth2 隐式流程

    我正在使用 Thinktecture AuthorizationServer AS 它运行良好 我想编写一个本机 javascript 单页应用程序 它可以直接调用 WebAPI 但是隐式流不提供刷新令牌 如果进行 AJAX 调用 如果令牌
  • 仅在提交后禁用提交按钮

    我有以下 HTML 和 jquery h2 Test disabling submit button for 1 minute h2 br p style text align center p
  • 使用 CachedNetworkImage 时应用程序崩溃

    在列表视图中使用 CachedNetworkImage 时应用程序崩溃 如果有很多图片 那么应用程序就会冻结并崩溃 是否可以异步地一张一张地加载每个图像 我可以有一个代码示例吗 谢谢 因此 如果您遇到与我相同的问题 并且您有大量图片 那么您
  • 无法启动 Laravel,出现“未找到基表或视图”错误

    首先我错误地回滚了2次迁移 然后我跑了php artisan migrate命令 我收到以下错误 Illuminate Database QueryException SQLSTATE 42S02 Base table or view no
  • 从 InnerText 中删除注释行

    我目前正在使用下面的代码来提取 InnerText 但是 发生的情况是我被一堆 html 注释行困住了 lt 如何使用下面的代码删除它们 HtmlWeb hwObject new HtmlWeb HtmlAgilityPack HtmlDo
  • Redmine - Ruby - 寻找自定义字段的值

    我检查了 IRC 的 redmine 但无法获得帮助 我很矛盾 不知道该把这个问题放在 Superuser ServerFault 还是这里 但由于我的问题是面向技术编程的 所以我决定在这里寻求帮助 我们有一个 Mercurial 存储库系
  • 声明类型的 MethodInfo 相等性

    我需要检查两个 MethodInfo 之间的相等性 它们实际上是完全相同的 MethodInfo 除了 ReflectedType 即 DeclaringType 相同 并且方法实际上应该具有相同的主体 有很多方法可以做到这一点 但我正在寻
  • 权限设置为777,文件仍然不可写

    我已将文件权限设置为 777 但无法使用 PHP 写入该文件 我可以在我的 FTP 客户端中清楚地看到该文件具有 0777 权限 当我这样做时 echo true is writable file txt yes no 我得到 不 我也尝试
  • try/catch 块内的 Response.Redirect 异常

    比如说 我有一个 try catch 块 它封装了一大块代码 然后在其中的某个位置我需要这样调用 Response Redirect protected void ButtonGo Click object sender EventArgs
  • java泛型:获取具有泛型参数的类的类

    我很好奇如何进行这项工作 Class
  • R,dplyr:根据条件快速构建互补行列表的函数

    我有一个约 80 000 行 x 26 列的数据集 这些行对应于机器人搭建套件的 SKU 或唯一 ID 这些列对应 26 个不同的机器人部件 一个单元包含了对构建整个机器人的贡献的一部分 行比例的总和可能不会等于 1 0 因为拼搭套装并不总
  • Java (Android) 中的 List 是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 Type 叫什么 https stackoverflow com questions 1286005 what is typetype called List gt 在 java 泛型中意味着什么 h
  • 如何在 MATLAB 中将变量值放入文本字​​符串中?

    我正在尝试编写一个需要两个输入的简单函数 x and y 并将它们传递给其他三个简单的函数 对它们进行加 乘 除操作 然后 主函数应将结果显示为包含以下内容的字符串 x y 以及总数 我认为我对输出参数有些不理解 无论如何 这是我的 可怜的
  • 类存在多个定义

    我正在使用 Kohana 框架 它允许多个类定义 在应用程序和系统子文件夹中 我使用 phpstorm 作为 IDE 它会向我发送消息multiple definitions exist for class 有没有办法告诉 phpStorm
  • 在android中的共享首选项中禁用对话框通知

    我在有铃声的应用程序中有共享偏好 我想禁用通知短信和彩信以及来自应用程序的通知 例如警报通知
  • sql中*是什么意思?

    例如 我知道什么SELECT FROM example table 方法 然而 不知道代码的每一部分的含义 我感到不舒服 SQL 查询的第二部分是您要为所获取的每条记录检索的列的名称 显然 您可以为每个记录检索多个列 并且 仅当您想检索al
  • AngularJS 对许多输入进行数据绑定的方式是什么?

    我正在学习 angularjs 我希望能够让用户输入许多输入 当这些输入被输入list数组元素应该相应改变 我想尝试使用 ngRepeat 指令 但我读到 因为它创建了一个新范围 所以我无法进行数据绑定 div div