当前位置: 首页 > Web前端 > HTML5

说说ionic3[6]继续使用形式:神奇的双向数据绑定

时间:2023-04-05 13:52:33 HTML5

相关章节:【说说ionic3[5]简单易用的形式:这些组件能玩一年](http://www.jianshu.com/p/b2a4...当我们有了一个表单,我们是如何处理表单中的数据的呢?回顾一下前端技术的发展,我们最早是使用表单直接获取/post表单到服务器,后来有了Ajax技术,我们把表单中的数据提取出来,不用刷新页面就可以和服务器交互。假设页面上有一个id为username的表单,有脚本中一个名为username的全局变量,如何让两者绑定document.getElementById('username').value=username;username=document.getElementById('username').value;在传统网页中,我们通过不断触发来调用这两个语句,并保持视图中的值与业务脚本中的值一致。很多时候,我们希望模型和视图始终保持同步:当模型发生变化时,它将触发视图更改;当视图更新时,它也会触发模型。更新。这个的实现要归功于Angular的一个重要特性:双向绑定。表单数据双向绑定这时,在我们的组件中,有这样一个成员名:exportclassHomePage{name:string="TonyStark";...}我们通过指令和名称双向绑定模板中准备的输入组件。Name其中[(ngModel)]是将表单和页面组件绑定在一起当表单是绑定到一个属性成员,它的值自然就等于这个属性的值。那么,当用户更改表单中的值时,属性成员是否会像我们预期的那样发生变化呢?我通过模板语法{{name}}将name属性输出到页面。下面动图展示了属性成员在表单更新时的表现:一切都是那么简单,也就是说我们以后开发表单的时候,只要绑定表单和变量,就可以完全实现它们之间的同步交给框架。最终,我们只需要处理组件中的数据,而不需要编写代码与表单进行交互。绑定对象的成员对于像这样的对象obj:any={id:100}可以这样绑定Radio的绑定对于Radio空间,[(ngModel)]并不是直接添加到ion-radio标签中,而是添加到ion-radio-group命令绑定的ion-list标签中。请选择性别我是男孩我是女生框架会将模型的值与组中每个radio的值进行匹配,相等的radio将默认选中,比如这个例子中的gender,在声明的时候就赋值“female”。性别:字符串=“女”;Toggle的绑定Toggle组件应该绑定一个布尔变量。选择绑定Select组件应该将数据绑定到ion-select标签。Notethatwhenmultiple="true"isselected,thevalueofselectshouldbeanarray.hobbies:string[]=['football','movie'];爱好[图片上传中...(7.3.gif-46356f-1511168830451-0)]足球篮球阅读电影TravelRange的绑定Range应该绑定一个数字变量,或者可以通过parseInt转换成的一个一串数字。这两个都可以使用:age:number=30;age:string="30";这种情况不会出错:age:string="30yearsold";但这可能会导致NaN错误:age:string="thirty";如果将dualKnobs="true"(双滑块)属性添加到范围中,则需要绑定一个包含两个成员(lower和upper)的对象。age:object={lower:25,upper:35}Datetime的绑定Datetime组件绑定了一个字符串。但是这个字符串的格式是什么?如果这个字符串的displayFormat是"YYYY-MM-DD",这个字符串是否也需要使用一致的格式?我们可以通过改变形式让字符串默认为空,先输出一个值。似乎符合预期。这个时候把displayFormat改成Chinese:这个时候我们发现datetime组件的值和我们看到的格式不一致。格式基于什么样的标准?其实它采用的是ISO8601日期格式标准,看起来是这样的:20172017-112017-11-202017-11-20T17:302017-11-20T17:30:55Z17:3017:55也就是说,在简单的中日期或时间的情况下,与我们熟悉的YYYY-MM-DDHH:mm:ss格式一致,但同时是日期和时间的情况下,需要注意其写法。所以,不管displayFormat是什么格式,最后我们得到的都是这种格式的字符串,就可以直接用这种格式和服务器进行交互。但是如果你的数据库使用的字段是日期时间格式,就需要进行转换。文档参考官方文档:DatetimeDateandTimeFormats