angular从0到1:数据的单向传递与双向传递

原文链接:这里
0.前言

前面一篇我们简单介绍了ngOnInit函数和constructor函数,然后对angular中的数据绑定进行了简单介绍。这篇文章中简单介绍一下数据的渲染与双向传递,这里主要是单向传递(渲染)(ts—>html)和数据的双向传递(html—>ts)

本文为了便于展示用的是template模板,前文已经介绍过了在很多情况下template和html中的标签可以通用,但是像html、body、script、base标签没有太大意义,不建议使用。

1.数据的单向传递与显示

比较简单,根据上一篇文章讲的,主要有三种方式。

{{expression}}
[target]="expression"
bind-target="expression"

本文为了演示简单,本文用的template模板来代替html (效果基本一样)。沿着上面几篇的思路,我们继续在menu.component.ts中

import { Component, OnInit } from '@angular/core';
 
@Component({
selector: 'app-menu',
// templateUrl: './menu.component.html',
// styleUrls: ['./menu.component.scss']
template: `
<p> {{ title1}}</p>
<h2 [title]="title2"> h2</h2>
<h3 bind-title= "title3"> h3 </h3>
`,
 
})
export class MenuComponent implements OnInit {
title1="我是title1"
title2="我是title2"
title3="我是title3"
constructor() {
 
}
ngOnInit(): void {
 
}
}

实现的效果如下:

对上面这个现象简单解释一下,一般用“{{差值}}”的方式来传递数据,后面h标签中,title是h标签默认的属性,我们只要用“[ ]”或者加上 “bind”就可以从ts文件中读取内容了。

2.数据的双向绑定

有的时候我们需要从前台传数据到后台,以前的做法是写一个函数用来触发事件,然后根据事件把值保存到变量中,angular给我们提供了数据的双向绑定方法,即可以从ts中传递数据到html,又可以从html中传递数据到ts。可以用于事件属性。数据的双向绑定主要使用ngModel。参考代码如下:

import { Component, OnInit } from '@angular/core';
 
@Component({
selector: 'app-menu',
// templateUrl: './menu.component.html',
// styleUrls: ['./menu.component.scss']
template: `
<input type="text" [(ngModel)]="name" >
<p>用户输入内容是:{{name}}</p>
`,
})
export class MenuComponent implements OnInit {
name="我是input"
constructor() {
 
}
ngOnInit(): void {
 
}
}

运行后的效果是:

可以看出,当我们修改input框里的内容是ts里面的变量值同步进行改变,这就是数据的双向绑定。

 

posted on 2022-01-31 12:50  longkui  阅读(123)  评论(0编辑  收藏  举报

导航