angular - 学习概念化数据绑定
问题描述
我正在学习 Angular,特别是关于数据绑定。
https://angular.io/guide/architecture-components在页面中间显示了可视化,显示了 DOM 和组件之间的定向数据流。
DOM 和组件(左,右)之间的这些线让我感到困惑。{{value}} 从 Component 到 DOM 是什么意思?当箭头从 DOM 指向中间有 (event) = "handler" 的组件时,这是什么意思?
我认为数据绑定意味着将数据从 .html 中的视图绑定到相应 .ts 中的控制器,反之亦然。DOM 在哪里,我的理解从哪里开始出错?
解决方案
这是 2 路数据绑定的示例,您对它如何工作的最初想法是正确的。
DOM 位于浏览器中,它构建了页面的实际表示以供用户查看。
在组件中创建变量时,它可以在 DOM 中使用:
testString: string = 'here is some text';
现在可以在视图的 HTML 中访问它:
<span>{{ testString }}</span>
但它也可以用于输入、单选按钮、选择等,当用户输入一个值时,控制器中的变量会假定该值:
<input type='text' [(ngModel)]='testString'>
现在,当页面加载时,“这里有一些文本”将出现在输入中,但用户键入的任何其他文本都会替换它并成为存储在 testString 中的值。如果您将 onChange 方法添加到暗示控制台记录 this.testString 的输入,您会看到它始终与输入中的值匹配。
您链接的文档的该部分的引用很好地解释了它:
在双向绑定中,数据属性值从组件流向输入框,就像属性绑定一样。用户的更改也流回组件,将属性重置为最新值,就像事件绑定一样。
希望有帮助。
推荐阅读
- com - 从聚合 COM 对象到聚合对象的 QueryInterface 调用是否需要特殊处理?
- html - CSS表格在不同屏幕尺寸下不同的单元格顺序
- java - 需要修复for循环
- c# - Entity Framework Core 3 原始 SQL 缺失方法
- r - .onLoad 在 'rJava 的 loadNamespace() 中失败
- javascript - 映射两个对象数组,匹配属性并将特定信息存储在新数组中
- c++ - 如何将编译器标志从 clang 传递给 nvcc
- python - How to find position of letters in array of strings
- github-actions - 只有主分支中的 .github/workflows 文件夹重要吗?
- asp.net-mvc - How Can I add a dollar symbol in ASP.NET MVC5?